JS中THIS的用法

2021-06-21 04:13:52 字數 685 閱讀 6114

this 永遠指向函式執行時所在的物件,而不是函式被建立時所在的物件。

匿名函式或不處於任何物件中的函式指向 window 。例:

1var foo = } 

foo.bar() 輸出 true

2var foo = )(); } }

foo.bar() 輸出 domwindow

3var foo = } }

foobar = foo.bar;

foobar.baz(foo.bar) 輸出 true

但是⋯⋯

wtf = foo.bar.baz;

wtf(foo.bar) 輸出 false

為什麼?因為 wtf 不是在乙個物件中被呼叫的,this 指向 domwindow 。驗證:

console.log(this) 輸出 domwindow

wtf(this) 輸出 true

沒明白你說的控制 this 指向是什麼意思,this 所指的東西是語言機制的一部分,你控制不了。如果你是問怎麼在函式裡保留乙份其執行時所在物件的 reference,可以用閉包(closure):

var foo = ;}};

baz = foo.bar();

此時 baz 是乙個脫離 foo.bar 而存在的函式,但是:

baz() 會輸出 duh i am foo 和 domwindow 。

js中with的用法

with語句用於設定 在特定物件中的作用域。它的語法 with expression statement 例如 var smessage hello with smessage alert touppercase 輸出 hello 在這個例子中,with語句用於字串,所以在呼叫touppercase...

js中this的用法

this是js的乙個關鍵字,隨著函式使用場合不同,this的值會發生變化。但是總有乙個原則,那就是this指的是呼叫函式的那個物件。1 純粹函式呼叫。function test test 其實這裡的this就是全域性變數。看下面的例子就能很好的理解其實this就是全域性物件global。其實這裡的t...

JS中 的用法

var o var test o.flag 等效於var test o.flag false alert test 由於對null與undefined用 操作符時都會產生true的結果,所以用兩個感嘆號的作用就在於,如果明確設定了o中flag的值 非 null undefined 0 等值 自然te...