call apply bind 三者都是改变this指向
call 的使用方法
function add(a,b){
alert(a+b);
}
function sub(a,b){
alert(a-b);
}
add.call(sub,3,1);
这个例子中的意思就是add来替换sub,add.call(sub,3,1) == add(3,1), 所以运行结果为aler(4); //注意:js中的函数其实是对象,函数名是对象Function对象的引用
apply 的使用方法
function add(a,b){
alert(a+b);
}
function sub(a,b){
alert(a-b);
}
add.apply(sub,[3,1]);
与call的不同就是 apply的以数组的形式传参
bind 的使用方法
function add(a,b){
alert(a+b);
}
function sub(a,b){
alert(a-b);
}
add.bind(sub,[3,1])();bind是返回一个改变上下文的一个函数,可以稍后调用,而apply,call是立即执行函数