this
在 JavaScript 中是個很容易被誤解的主題,主要會跟呼叫方法以及函式類型有關,導致很多非預期的結果出現。讓我們來重新好好認識 this
吧!
傳統函式
this
指的是「函式被誰呼叫(呼叫的主體)」
傳統函式中的 this
只跟「調用方式」有關,物件下呼叫的 this
基本上都是指向該物件
JS()
是直接呼叫,沒有物件當作接頭人- 所以
this
是 全域物件(在瀏覽器是window
) this.A
變成window.A
,所以是'Global'
箭頭函式
箭頭函式的 this
取決於定義它的那一刻所處的外層作用域,不是哪個物件「擁有」或「執行」它時。
箭頭函式會自動加上 return
(若省略大括號),箭頭函式沒有自己的 this,this
會繼承外層函式作用域,this
請往外層看
this
繼承外層