亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript閉包作用域問題,JS大神進!

JavaScript閉包作用域問題,JS大神進!

素胚勾勒不出你 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,子函數找變量不是一級一級網上找嗎,找的不應該是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條經驗 獲得超4個贊

匿名函數的this一般都是window。

第一段代碼 getNameFunc 對應的function的this指向object,但該函數返回了另外一個函數,函數是匿名的(this指向window)

第二段代碼中通過閉包,讓匿名函數引用getNameFunc 的局部變量that(其實是getNameFunc 的this)

匿名函數執行尋找that變量時,它自己是沒有這個變量的,就向上找that,這時的that,引用的是getNameFunc 的this,也就是object。


查看完整回答
反對 回復 2018-10-31
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

在 getNameFunc 方法里面 this 指向的是 object,因為這些一個對象的方法,

而更里面 return 的那個 function 里面 this 指向的是全局對象,因為這個 function 是個普通調用的函數,它不是 object 的方法

具體來說你需要了解在各種情況下函數調用時 this 的指向問題


查看完整回答
反對 回復 2018-10-31
  • 2 回答
  • 0 關注
  • 751 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號