call , apply 和bind的相同点和区别

382 阅读1分钟

相同点

  1. apply、call、bind三者都是用来改变函数的this对象的指向的;
  2. apply、call、bind三者第一个参数都是this要指向的对象,也就是想指定的上下文;
  3. apply、call、bind三者都可以利用后续参数传参;

不同点

  1. call,bind后面的第一个参数是指向的对象,第二个参数是往对象传的值
  2. apply后面的第一个参数是指向的对象,第二个参数是数组,数组里面是往对象传的值(arguments 全部参数)
var myFun = function(arg1,arg2){};
//调用
myFun.call(this,arg1,arg2);
myFun.apply(this,[arg1,arg2]);

this可以是任何一个javascript对象,call需要把参数按顺序传递进去,而apply则是把参数放在数组里进行传递。
3. call和apply更改this指向会自动调用,bind需要手动调用