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

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

今天看到閉包,被this搞蒙了,求解答。。。

今天看到閉包,被this搞蒙了,求解答。。。

comlejade 2015-12-07 16:09:01
var?name?=?"window"; var?object?=?{ ????name:?"My?Object", ????getNameFunc:?function(){ ????????return?function(){ ????????return?this.name; ????????????}; ????????} ???}; alert(object.getNameFunc()());??//"window"var?name?=?"window"; var?object?=?{ ????name:?"My?Object", ????getNameFunc:?function(){ ????????var?that?=?this; ????????return?function(){ ????????return?that.name; ????????}; ????} }; alert(object.getNameFunc()());??//My?Obect先來個經典的例子,首先那個第一個this是怎么變成全局對象的?在JS高級程序設計中這樣解釋:每個函數在被調用時,其活動對象都會自動取得兩個特殊變量:this 和 arguments。內部函數在搜索這兩個變量時,只會搜索到其活動對象為止,因此永遠不可能直接訪問外部函數中這兩個變量。只會搜索到活動對象這個是明白的,再往下就不懂了。。。
查看完整描述

1 回答

已采納
?
木子舟義

TA貢獻33條經驗 獲得超4個贊

每一個沒有用 someobject.somefunc() ?這樣調用的函數里的this都是window..

你的代碼中object.getNameFunc() 指向的是里面的一個匿名函數。因為用的someobject.somefunc()這種方式調用 所以this 指向的是object。然而在這個函數里又返回了一個函數。而且這個函數并沒有用someobject.somefunc()這種方式調用。所以它里面的this指向window

不理解可以再問

查看完整回答
1 反對 回復 2015-12-07
  • comlejade
    comlejade
    謝謝啊,這第一句話 每一個沒有用 someobject.somefunc() 這樣調用的函數里的this都是window..還真是不知道,漲姿勢了。那要是按書上這么解釋,內部函數搜索到的活動對象中沒有外面的變量嗎?這個該怎么理解。。。不懂,這樣想,我好想對這個閉包的作用域鏈不太明白。
  • i愛慕客
    i愛慕客
    我要和你結拜兄弟
  • comlejade
    comlejade
    你要知道,落地為兄弟,何必骨肉親啊。。。
  • 1 回答
  • 0 關注
  • 1695 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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