箭頭函式的this指向問題及其具體使用場景

2021-10-05 09:16:19 字數 947 閱讀 1526

obj =

, sayage2:()

=>

,// obj呼叫sayage3,那麼sayage3函式的this指向obj,箭頭函式的this指向sayage3中的this,也就指向了obj

sayage3:

function()

,2000)}

,//settimeout並沒有直接呼叫者,所以function中的this指向window

sayage4:

function()

,1000)}

}obj.

sayage1()

obj.

sayage2()

obj.

sayage3()

obj.

sayage4

()

應用場景:

1、例如定義了乙個obj物件,物件裡面定義了屬性是函式,而函式屬性裡面又執行了settimeout函式,需要列印物件中的一些屬性值,這個時候可以用箭頭函式,因為obj呼叫函式屬性,那麼函式屬性的this指向obj,而函式屬性裡面的箭頭函式的this指向函式屬性的this,就指向了obj

2、在建構函式中,需要在函式內建乙個定時器,列印函式內部的this.name,那麼使用需要使用箭頭函式

var env =

'outside'

function

test()

,1000

)settimeout

(function()

,2000)}

const test =

newtest()

;

改變this指向的方法:

call

bind

建構函式例項化new時,this指向新建立的這個例項

建構函式return時,this指向return的這個物件

箭頭函式this指向問題

前言 線下筆試碰到的題目,發現學習掌握的不透徹,所以回來填坑 const obj1 const obj2 console.log obj1.func.bind obj2 輸出結果為 剛開始很疑惑結果,於是做了個對比 const obj1 const obj2 console.log obj1.fun...

箭頭函式 this指向問題

1.為什麼要用箭頭函式 2.箭頭函式分析this指向 1.this指向呼叫函式的物件 function a a 2.this指向window var a 2 這裡不能換成let a 2 因為window.獲取不到a的值 var obj obj.b 總結 1.箭頭函式在定義的時候生效 而普通函式則在呼...

箭頭函式this指向問題

箭頭函式表示式的語法比函式表示式更簡潔,並且沒有自己的this arguments super new.target。箭頭函式表示式更適用於那些本來需要匿名函式的地方,並且它不能用作建構函式。箭頭函式的this指向的是箭頭函式所在作用域的this指向 向來看一下這個物件,我在外部定義了乙個全域性變數...