call()、apply()、bind()作用和区别

一、call() 、apply()

  作用:让函数在某个指定的对象下执行

var obj = {x: 1}

function foo() {console.log(this.x)}

foo.call(obj)       //打印结果: 1

call() 和apply()的第一个参数相同,就是指定的对象。这个对象就是该函数的执行上下文。

两者区别:参数的传递方式不同,apply()参数以数组的形式传递

var obj = {};
 
function foo(a, b, c) {
  console.log(b);
}
 
foo.call(obj, 1, 2, 3)   //打印结果: 2;
var obj = {};
 
function foo(a, b, c) {
  console.log(b);
}
 
foo.apply(obj, [1, 2, 3])   打印结果: 2;
function log(){
  console.log.apply(console, arguments);
};
log(1);    //1
log(1,2);    //1 2

 

二、bind()

bind() 方法会返回执行上下文被改变的函数而不会立即执行,而前两者是直接执行该函数。他的参数和call()相同

posted on 2018-09-21 16:55  我爱吃豌豆  阅读(135)  评论(0编辑  收藏  举报

导航