其实这个最简单理解就是改变this的指向的问题,bind中最直接明了的是永久改变了this的指向问题.
var a ={
a:'haha',
getA:function(){
console.log(this.a)
}
}
var b ={
a:'hello'
}
function run(fn){
fn();
}
var getA = a.getA;//这里的输出的是'haha',this->a
var getA2 =getA.bind(a); //这里bind(a)使得里面的this->a
a.getA();//haha
getA(); //fun
run(a.getA); //这里是把a.getA直接作为参数来执行
getA2.call(b);//由于这里的this永久指向了a,就算call(b)也没用
而call()跟apply()的区别只是参数的不 同:
call(thisObj,Object)
apply(thisObj,[argArray])
window.firstName = "diz";
window.lastName = "song";
var myname = { firstName: "my", lastName: "Object" };
function show() {
console.log("Hello " + this.firstName + " " +this.lastName, " glad to meet you!");
}
show();
show.call(myname);
希望对你的理解有帮助!!!!
浙公网安备 33010602011771号