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