JS高階之 this的指向

2022-07-26 05:12:12 字數 1115 閱讀 3182

this到底指向什麼地方,決定於函式的呼叫方式。

1、 指向全域性變數 --- 函式被單獨呼叫的時候

function

fn()

var a = 2;

fn();

//2 fn單獨呼叫,this引用window

2、 指向某物件 --- 隱式繫結

隱式呼叫的意思是,函式呼叫時擁有乙個上下文物件

function

fn()

var obj =;

obj.fn();

//2 this引用obj。

//說明的一點是,最後乙個呼叫該函式的物件是傳到函式的上下文物件。如:

function

fn()

var obj2 =;

var obj1 =;

obj1.obj2.fn();

//42 this引用的是obj2.

//還有一點要說明的是,失去隱式繫結的情況,如下:

function

fn()

var obj =;

var bar = obj.fn; //

函式引用傳遞

var a = "全域性"; //

定義全域性變數

bar(); //

"全域性"

如上,雖然有隱式繫結,但是它執行的效果明顯是把fn賦給bar。這樣bar執行的時候,依然是函式單獨呼叫,指向全域性變數,所以輸出結果如上。

3、 指向某物件 --- 顯示繫結

function

fn()

var obj =;

fn.call( obj );

//2

如果我們傳遞第乙個值為簡單值,那麼後台會自動轉換為對應的封裝物件。如果傳遞為null,那麼結果就是在繫結預設全域性變數。

4、 指向類例項

如果是乙個建構函式,用new來呼叫,那麼this指向新建立的物件。

function

fn(a)

var bar = new fn( 2);

console.log( bar.a );

//2

js高階之三 this指向

本文不考慮嚴格模式 錯誤之處感謝提出,請勿噴 function 函式 this 指向一共有4種規則 預設繫結,隱式繫結,顯式繫結,new繫結 預設繫結 function fn var a 1 fn a 1 fn在沒有任何修飾的被呼叫,只能使用預設繫結 this指向了直接呼叫的window 隱式繫結 ...

js之this指向規則

1.在瀏覽器環境中,this在全域性作用域下指向window物件,nodejs裡面指向global物件 2.函式中三種不同的指向 定義乙個函式 function foo 不同的環境指向不同的物件 直接呼叫 foo window global物件 放在物件裡使用 let obj obj.foo obj...

js物件導向之this指向

對於前端開發者來說,this是乙個讓人又愛又恨的小妖精。應用得好,專案事半功倍,應用得不好,專案可能漏洞百出。接下來本文就將揭開this的神秘面紗。鄙人第一次鼓足了膽子寫部落格,望路過的大神輕踩 首先強調的一點是,在函式中this指向不是在定義的時候確定的,而是在真正執行此函式時確定的。因為this...