一般來(lái)說(shuō),this總是指向調(diào)用某個(gè)方法的對(duì)象咨演,但是使用call()和apply()方法時(shí)攻走,就會(huì)改變this的指向。
demo1:
var obj = {name:"ii"};
function ff(){
console.log(this);
//console.log(this.name);
}
ff(); //this代表windows
ff.call(obj); //this代表obj
ff執(zhí)行call方法的時(shí)候淆院,讓fn方法中的this變?yōu)榈谝粋€(gè)參數(shù)值obj何乎。
demo2
面試題:
var color = "red";
var a = {color:"yellow"}
function show_color(){
var color = "green";
console.log(this.color);
}
show_color();
show_color.call()//等效于show_color.call(window)
show_color.call(a)
demo3
var Pet = {
words : '喵喵喵',
speak : function (say) {
console.log(say + ''+ this.words)
}
}
Pet.speak('Speak'); // 結(jié)果:Speak喵喵喵
var Dog = {
words:'汪汪汪'
}
//將this的指向改變成了Dog
Pet.speak.call(Dog, 'Speak'); //結(jié)果: Speak汪汪汪