HUWWW
2019-03-22 16:15:37
在看高程不知道第幾遍的時(shí)候,一直以為以前自己理解的東西,突然卻懵逼了var name='thi window';var obj = { name:'the obj', getName:function(){ console.log(this); console.log(this.name); }}obj.getName();(obj.getName)();(obj.getName=obj.getName)();第三個(gè)輸出的是打印the window測(cè)試過(guò)比如var ty;(ty = obj.getName)()//the window高程那邊解釋是先復(fù)制在執(zhí)行,改變了this的指向,測(cè)試也確實(shí)是這么回事,如果直接調(diào)用執(zhí)行this是obj的只要賦值在執(zhí)行為撒指向就改變了呢?假如分開(kāi)寫(xiě)的話能理解比如 var ty = obj.getName;ty();//the window這樣寫(xiě)能理解,但是那個(gè)括號(hào)賦值并執(zhí)行有點(diǎn)理解不過(guò)來(lái)啊,我也只能強(qiáng)制自己記住如果賦值在執(zhí)行this就改變各位有更好的理解和看法嗎?
5 回答

ibeautiful
TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
這個(gè)怎么說(shuō)呢?
拿第一個(gè)和第三個(gè)比:
調(diào)用的時(shí)候,都是在window下執(zhí)行的?。?!都是在window下執(zhí)行的?。?!都是在window下執(zhí)行的?。?!
第一個(gè) 是window的obj的getName。。。。他從window跑到了obj對(duì)吧。他的爸爸是誰(shuí)?是window的obj 對(duì)吧。
而第三個(gè) 賦值的時(shí)候。。window的obj的getName = window的obj的getName,賦值操作是先找到左邊的obj的getName。。好了。貌似跑到了obj。。。但是他右邊是誰(shuí)是window的obj的getName...所又他要跑回window...
等號(hào)左側(cè)的getName和 右側(cè)的getName 不想等。
所以共同的爸爸就是祖先window

隔江千里
TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
添加回答
舉報(bào)
0/150
提交
取消