JavaScript 的 this
在 JavaScript 中,this 的值是動態的,通常會由被呼叫的函式來決定。所以,影響 this 的值不是宣告的時機,關鍵在於在哪裡被調用。
而 this 值有 5 種判斷的方式,包含:
-
一般函式調用會指向全局物件,若是在非嚴格模式下的瀏覽器會默認為 Window;嚴格模式下 this 則為 undefined。
-
當一個函式是做為一個物件的方法來調用時,this 會指向這個物件。
-
當一個函式用 new 關鍵字調用時,此函式執行前會先創造一個新的物件,this 會指向這個新組成的物件。
-
我們也可以使用 apply、call、bind 方法來指定 this 指向的物件。
-
ES6 後出現的箭頭函式(arrow function)並沒有屬於自己的 this 值,它會從本身最近的外在函式繼承他的 this,如果它的外在函式也是箭頭函式,就會再繼續往上尋找,直到找到全域環境的預設 this 值(例如:瀏覽器中就是 window)。