箭頭函式中的this指向問題

2022-06-06 17:51:08 字數 808 閱讀 9499

箭頭函式沒有自己的 this,它內部的 this 是外層**塊的 this,也就是定義箭頭函式時所在的物件。

es6 標準入門裡面對箭頭函式 this 的指向有如下說法:

函式體內的 this 物件就是定義時所在的物件,而不是呼叫時所在的物件。

一般this 物件的指向是可變的,但是在箭頭函式中,this 的指向是固定的。

普通函式

function b() 

let c =function()

let obj2 =

obj2.a()

//列印出obj2,列印出呼叫時的物件obj2

obj2.c()//

列印出window,列印出直接呼叫時的物件window

}let obj =

obj.b()

//使函式b內上下文this為obj

箭頭函式

function b() 

let obj2 =

obj2.a()

//列印出obj,列印出宣告時的上下文,而不是呼叫它的物件

obj2.c()//

列印出obj,列印出宣告時的上下文,而不是呼叫時的上下文

}let obj =

obj.b()

//使函式b內上下文this為obj

es6的箭頭函式可以改寫成es5,如下:

//

es6function foo() ,

100);}//

es5function foo() ,

100);

}

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