總結js中this的指向問題

2021-08-16 17:47:02 字數 1673 閱讀 6954

var a=1

//就相當於window.a=1

function

demo1()

function

demo2()

return demo3

}demo1() // 呼叫demo1函式,這裡this很顯然指向window

var a=demo2();

a() // 這裡看到會列印出3,應該也很好理解,a變數將demo2函式執行後的的返回值及demo3函式返回,然後執行,此時this依舊指向window

var obj1=

}obj1.increment() // obj1},4 ;列印出obj1物件和4,obj1包含乙個value值和乙個increment方法,也好理解

var obj2=)() 

},print:function()

}obj2.increment()

obj2.print()

var p=obj2.print

p()// 列印結果出如下

//

// 5

// 這又是啥 window

// undefined

// print 5

// print 1

this,直接在全域性中宣告的函式this會直接指向window物件

var demo1=()=>

var demo2=()=>

return demo3

}demo1() // 呼叫demo1函式,這裡this還是指向window,因為之前說的在全域性下宣告本身就有個this指向window物件

var a=demo2();

a() // 3,這裡也一樣

var obj1=

}obj1.increment() // 這時候會看到輸出window物件和乙個nan

this,所以執行increment函式中的this依舊會指向window,而window下的value還不存在,所以為undefined再執行+1操作所以value就變成了nan

var obj2=)() 

},print:function()

}obj2.increment()

obj2.print()

var p=obj2.print

p()// 列印結果出如下

// window

// nan

// 這又是啥 window

// nan

// print 1

// print 1

window物件(this沒繫結的嘛),後面的value當然又是沒宣告.....然後自執行函式也沒得說,後面才接著給windowvalue賦值為1了,後面就兩句自然輸出兩次1了

北大青鳥學校

前端開發小組

js中this指向總結

昨天,剛看了這部分內容,怕自己以後會忘記,所以這裡做乙個總結,也再次重溫一遍知識點。this指向,this指呼叫當前方法 屬性 的物件,這裡重點是首先要呼叫,後面才是物件,所以在js中 這算是簡單的理解,也和全域性變數區域性變數的感覺差不多 後期較為複雜的有用this或者that作為引數傳參,然後達...

js中this指向的總結

js中的this指向問題可謂是老生常談。我這樣的初學者大多數會認為很繞。本篇部落格會把this指向問題按照權重進行分級,並指出一些經常出問題的情景。這一級就是所謂的沒有呼叫,this指向window。如下 function test test 其實這個可以理解為,因為全域性的函式,呼叫時其實可以理解...

JS中this指向問題

解析器在呼叫函式時,每次都會向函式內部傳遞進乙個隱含的引數,這個隱含的引數就是this,this指向的是乙個物件,這個物件我們稱之為函式執行的上下文物件,根據函式的呼叫方式不同,this會指向不同的物件.簡單來說一下函式中this指向問題,1.this是什麼?任何函式本質上都是通過某個物件來呼叫的,...