apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。
call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法。
bind:一个对象的方法绑定到一个对象上。例如:var eatFishFun = A.fun.bind(B, args1,args2)。
相同点:第一个参数,都为指向调用对象
区别:apply只能传递两个参数,第二个参数为数组,call和bind可传递多个参数
详细看以下代码
var A= {
name: "A",
funA: function (param1, param2) {
console.log("A");
console.log("this=>"this);
console.log(param1, param2);
}
}
var B= {A
name: "B",
funB: function (param1, param2){
console.log("B");
console.log("this=>"this);
console.log(param1, param2);
}
}
A.funA.call(B, "param1", "param2");
A.funA.apply(B,["param1", "param2"]);
var funC = A.funA.bind(B,"param1","param2");
funC ();