共同点:它们的第一个参数都是改变this的指向;
区别:
call是挨个传值,apply传一个数组,bind也是挨个传值,但和call和apply还有一些不同,使用call和apply会直接执行这个函数,而bind并不直接执行,而是将绑定好的this重新返回一个新函数,什么时候调用由你自己决定;
如:
function fn(a,b,c,d){
console.log(a,b,c);
}
fn.call(null,1,2);
fn.apply(null,[1,2,3]);
var f = fn.bind(null,1,2,3);
f(4);
结果如下:
1 2 undefined
1 2 3
1 2 3