看了tom大叔的深入淺出JavaScript,其中有一段關于this的有點搞不懂,他這樣說:“當調用表達式限定了call括號左邊的引用類型的值, 盡管this被設定為null,但結果被隱式轉化成global。當引用類型值的base對象是被活動對象時,這種情況就會出現?!?然后給了下面這段例子: function foo() { console.log(this);//goo
function bar() { console.log(this); // global
}
bar(); // the same as AO.bar()
} var goo = { go:foo
}
goo.go();根據我看了的理解在進入函數上下文時,這對象里面會有三個屬性:1、變量對象(vo) 2、作用域鏈 3、this值,現在要說的就是this的值,里面說函數的this值是有調用者call給的,所以第一個log出goo沒錯,但在foo里面調用bar函數時為什么會是global,按照理解在執行bar()時會進入bar的上下文,而他的this值應該是調用者給的,而調用者foo的this值是goo,那為什么第二個log出來global。。。誰能解釋一下這其中運作的過程!
一個this的問題
慕田峪9158850
2018-09-11 09:14:30