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指向 向來看一下這個物件,我在外部定義了乙個全域性變數...