JS中this關鍵字的指向

2021-09-11 04:07:22 字數 1158 閱讀 2452

js中感覺this的指向是多變的。這裡進行一下總結

個人感覺this的指向大致分為以下幾類

1、作為普通函式的呼叫。

例如: 

var x = 1;

function test()

test();                                          //這裡列印1

一般這種情況我個人為了加深理解都會做一步變形。把所有的函式呼叫加上字首比如test()就是window.test()。理解為this指向呼叫該函式的物件。

2、作為物件的方法呼叫。

例如:var y = 1;

var obj =

}//        第一種列印

console.log(obj.output());         //             這裡列印2

//        第二種列印

var assignmentobj = obj.output;

console.log(assignmentobj());          //這裡列印1

這裡我個人是這麼理解的obj.output(),方法指向呼叫者是this也是指向obj的。所以列印 obj的y 屬性。也就是2

而對於assignmentobj()還是理解為window.assignmentobj();所以這裡的this指向window。列印obj的y屬性。  也就是1

3、作為建構函式裡面的指向

例如:var z = 1;

function objtest()

}

var aaa = new objtest();

var bbb = new objtest();

aaa.z = 3;

console.log(aaa.outputtest());                       //列印3

console.log(bbb.outputtest());                      //列印2

個人理解這裡的this是指向例項本身的,所以列印例項本身的屬性,如果本身的屬性被修改。就會列印修改後的屬性,總之,指向例項化本身。

js中this關鍵字的指向問題

全域性函式中非嚴格模式下,this指向window物件,而嚴格模式下則為undefined物件方法中此時this指向該物件建構函式中此時this指向例項物件以前都是按2中的方法去強行記憶的,知道看到這樣一句話 this始終說明當前方法屬於誰 頓覺豁然開朗。全域性函式全域性函式本身是全域性物件wind...

js中的this關鍵字

普通函式 window functionfn fn window 事件函式 指向事件源 var btn document.queryselector button btn.onclick function 定時器 中也是window setinterval function 1000 預保留this...

JS中的this關鍵字

js中的this代表的是當前行為執行的主體 js中的context代表的是當前行為執行的環境 區域 this是誰和函式在哪定義的和在哪執行的都沒有任何的關係,這和它的執行主體有關。function fn var obj fn window obj.fn obj function sum sum wi...