this 指向
1 | this 的指向為何 |
simple call
注意:this 的指向相當複雜,大部分情境(95%)只需要了解其中一種即可
傳統函式中的 this 只與調用方式有關
1 | var someone = '全域'; |
呼叫 callSomeone
時前方沒有物件,屬於 simple call ,simple call 指向全域
應用變化
1.
在呼叫函式時,如果前面有任何一個物件,那麼 this 就會指向前一個物件 obj,因此 console.log 的結果就是物件而非全域。
2.
在呼叫 callSomeone 前有 obj2 這個物件, this 指向 obj2 ,因此 console.log 的結果就是物件2而非全域。
3.
在呼叫 callSomeone 時,前一個物件是 innerObj , this 指向 innerObj,因此 console.log 的結果就是內層物件而非外層物件、全域。
4.
調用 callSomeone 時,前方沒有物件,屬於 simple call,因此 console.log 的結果就是全域。
5.
1 | var someone = '全域'; |
callback funtion 大部分來說屬於 simple call 形式,因此 console.log 的結果就是全域。