三者相同点
call apply bind都可以改变函数调用的this指向
call与apply的不同
传入参数的不同,call可以按照顺序一次传入参数,apply的第二个参数只能是数组。
call、apply与bind的不同
call()、apply()都是立即调用函数
bind()是将函数返回,生成一个新的函数长期绑定某个函数给某个对象使用。传参方式与call相同。
var obj = {name:'coco'};
function foo (data) {
console.log(this.data);
}
var test = foo.bind(obj,33);
test();
setTimeout(function () {
console.log(this);//输出obj
//制定this
}.bind(obj),1000)