2.7 This
Example 1.
ANS:Aurelio De Rosa 和 John Doe 原因是,JavaScript中關鍵字this所引用的是函數上下文,取決於函數是如何調用的,而不是怎麼被定義的。 在第一個console.log(),getFullname()是作為obj.prop對象的函數被調用。因此,當前的上下文指代後者,並且函數返回這個對象的fullname屬性。相反,當getFullname()被賦值給test變量時,當前的上下文是全局對象window,這是因為test被隱式地作為全局對象的屬性。基於這一點,函數返回window的fullname,在本例中即為第一行代碼設置的。
Example 2.
ANS:全域
a = auntie.callName
函式間接參考,a()
為一般函式呼叫,因此 this
指向全域物件。
Example 3.
ANS:
在 outer 函式,this 和 self 都指向 myObject,因此輸出都是 bar,但在 inner 函式,由於 IIFE 有自己的作用域,因此 this 輸出為 undefined,但是 self 因為保存了 this 的指向,因此輸出為 bar
Last updated