JavaScript this筆記

Willy
Dec 31, 2020

--

this:會指向當時執行環境;取決於被誰(什麼時候)呼叫,而不是被誰(在哪)定義。

在執行環境初期時會先創建Global Object window物件與 this變數,this會指向window,所以在全域執行環境中window 會等同於 this。

只要在function 裡面的this 都是指向window,無論function位於哪一層(function 執行算是全域執行環境)。

在物件中 this 會指向物件本身(物件執行環境),但物件中的function 中如果還有function 會指向window(function 執行算是全域執行環境)。

嚴格模式底下就都是undefined

非嚴格模式,瀏覽器底下是window

非嚴格模式,node.js 底下是global

obj.foo()是通過obj找到foo,所以就是在物件環境執行

var foo = obj.foo,變數foo就直接指向函數本身(變數foo存放的是obj.foo的位址 ),所以對foo()而言就變成在全域環境執行(呼叫一般function)。

f()直接呼叫function 全域執行環境。

obj.f() 物件中f指向 f(),然後透過物件執行,所以是物件執行環境。

參考連結

參考連結

--

--

Willy
Willy

Written by Willy

前端修練筆記本,記錄一些踩雷及學習過程,希望能順便幫助一些,在學習或開發路上卡關的人們。

No responses yet