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

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

 不明白這兩段代碼的this指向問題

 不明白這兩段代碼的this指向問題

MYYA 2019-05-25 15:41:50
這是《你不知道js》里面的兩段代碼,第一段代碼this是指向調用的位置的,也就是obj2。不明白為什么第二段代碼this不指向obj,而是指向全局了。functionfoo(){console.log(this.a);}varobj2={a:42,foo:foo};varobj1={a:2,obj2:obj2};obj1.obj2.foo();//42functionfoo(){console.log(this.a);}varobj={a:2,foo:foo};varbar=obj.foo;//函數別名!vara="oops,global";//a是全局對象的屬性bar();//"oops,global"
查看完整描述

2 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

this總是指向調用者。
第一段里面foo函數的調用者是obj2,而第二段foo函數賦值給了全局變量bar,那么調用bar函數的就是全局對象,那么this指向全局對象,故輸出全局的a
                            
查看完整回答
反對 回復 2019-05-25
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

與我們常見的很多語言不同,JavaScript函數中的this指向并不是在函數定義的時候確定的,而是在調用的時候確定的。換句話說,函數的調用方式決定了this指向。
參考:JavaScript的this指向問題深度解析
                            
查看完整回答
反對 回復 2019-05-25
  • 2 回答
  • 0 關注
  • 383 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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