bind、call、apply

相同点:

  他们的相同都是来改变this的指向问题。

不同点:

  call传参是有多个的参数,第一个是this的指向的对象,后面的是需要使用到的参数。

  apply是两个参数第一个是this的指向的对象。第二个参数是一个数组。

//例如:
var obj = {}//定义一个空的对象
function f(x,y){
console.log(x,y)
console.log(this) //this是指obj
}
f.apply(obj,[1,2]) //后面的值需要用[]括起来
f.call(obj,1,2) //直接写

 

  bind的传参数和call是一样的,但是call使用了就会直接执行这个函数,但是bind是返回一个函数。需要再执行。

//例如:
function f(){
console.log("看我怎么被调用");
console.log(this) //指向this
}
var obj = {};
f.call(obj) //直接调用函数
var g = f.bind(obj); //bind()不能调用函数
g();  //此时才调用函数

 

上一篇:正交多分辨分析1


下一篇:箭头函数与普通函数的区别