ES6中的特殊函數類型:箭頭函數,不使用function
默認的this
綁定規則。
箭頭函數的this
取決于其外層作用域的this
綁定情況:
function test(){
return ()=>{
console.log(this.a)
}
}
var obj1 = {
a:1
}
var obj2 = {
a:2
}
var bar = test.call(obj1)
bar.call(obj2) // 結果為1
// test內部的箭頭函數在第一次調用test時(test函數的執行),進行了定義,此時被test函數綁定為obj1
// 箭頭函數取決于其外部代碼塊綁定的this
// 因此后面再執行也不會改變this的綁定
箭頭函數內部的this
會綁定為其定義時的所在的對象,其原因為箭頭函數內部沒有this
,因此它的this
為它外層代碼塊的this。同時因為它沒有this
,箭頭函數不能作為構造函數使用,會拋出錯誤。