結論:
於某物件的方法(函式)之最外層(不在其他函式底下)執行環境(註1)中,this 指向該物件本身。
其餘其他情況, this 都指向 global 物件
註1:
每個函式被呼叫時js engine都會為各函式建立一個執行環境
範例
避免 this 關聯混淆的方法:
範例
特殊情況:
可使用call、apply於每次執行函式時傳入物件做為 this 參照
call 與 apply 的首個參數都是 this 參照的 obj,差別在於 call 第2個參數開始是一般參數傳入,apply則是第2個函數為陣列,內容為一般參數
使用函式的通用 bind 方法可綁定函式中 this 指向的物件, bind 方法接收 this 指向的物件,並傳回綁定 this 物件後的新函式
arrow function:
其中的 this 是延用其 lexical context 的 this
白話說就是該 arrow function 所在 scope 的 this 指向的物件
arrow function 中的 arrow function 關聯到的 this 都相同
特殊情況中指定 obj 的方式對 arrow function 沒有作用,不影響其 this 指向的物件