素胚勾勒不出你
2018-10-12 15:14:23
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()());這一段返回的為什么是 The Window,子函數(shù)找變量不是一級一級網(wǎng)上找嗎,找的不應該是My Object嗎?var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this;
return function(){
return that.name;
};
}
};
alert(object.getNameFunc()());返回的是My Object,這里面的var that = this改變了指向嗎,這里的That是哪個對象?
2 回答

GCT1015
TA貢獻1827條經(jīng)驗 獲得超4個贊
匿名函數(shù)的this一般都是window。
第一段代碼 getNameFunc 對應的function的this指向object,但該函數(shù)返回了另外一個函數(shù),函數(shù)是匿名的(this指向window)
第二段代碼中通過閉包,讓匿名函數(shù)引用getNameFunc 的局部變量that(其實是getNameFunc 的this)
匿名函數(shù)執(zhí)行尋找that變量時,它自己是沒有這個變量的,就向上找that,這時的that,引用的是getNameFunc 的this,也就是object。

RISEBY
TA貢獻1856條經(jīng)驗 獲得超5個贊
在 getNameFunc 方法里面 this 指向的是 object,因為這些一個對象的方法,
而更里面 return 的那個 function 里面 this 指向的是全局對象,因為這個 function 是個普通調(diào)用的函數(shù),它不是 object 的方法
具體來說你需要了解在各種情況下函數(shù)調(diào)用時 this 的指向問題
添加回答
舉報
0/150
提交
取消