箭頭函式的this
在 JavaScript 中遇到 this ,有 2 件事情要注意:
- this 代表的是 function 執行時所屬的物件,而不是 function 本身。
- 沒有特別指定 this 的情況下,this 預設綁定( Default Binding )「全域物件」,也就是 window。
物件調用與 Simple Call
先來看看 simple call 跟物件調用的狀況:
箭頭函式的 this
當 this 出現在箭頭函式中,因為箭頭函式沒有自己的 this ,所以會指向外層。
一樣設一個全域變數與一個 callHero()函式。
callBack function 中的 this
但是 callBack function 被包在一個物件屬性的函式 callHero 中,當 spiderMan.callHero()
,也就是spiderMan 調用 callHero()的時候,setTimeout 是被 callHero 這個函式所調用,這時 this 指向全域的 window。
同樣的例子,在 setTimeout() 中改用箭頭函式,則 this 會指向外層,也就是調用他的物件– spiderMan 這個物件。