call 、bind 、 apply
这三个函数的第一个参数都是this
的指向对象,第二个参数差别就来了:call
的参数是直接放进去的,第二第三第n
个参数全都用逗号分隔,直接放到后面obj.myFun.call(db,'成都', ... ,'string' );
apply
的所有参数都必须放在一个数组里面传进去obj.myFun.apply(db,['成都', ..., 'string' ]);
bind
除了返回是函数以外,它 的参数和call
一样
function apply1(num1, num2){
return sum.apply(this, [num1, num2]);
}
function call1(num1, num2){
return sum.call(this, num1, num2);
}
bind()和call与apply不同。bind
返回的是一个新的函数,你必须调用它才会被执行。
var button = document.getElementById("button"), text = document.getElementById("text"); button.onclick = function() { alert(this.id); // 弹出text }.bind(text);