ES6中的特殊函數(shù)類型:箭頭函數(shù)销部,不使用function
默認的this
綁定規(guī)則。
箭頭函數(shù)的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) // 結(jié)果為1
// test內(nèi)部的箭頭函數(shù)在第一次調(diào)用test時(test函數(shù)的執(zhí)行),進行了定義恬砂,此時被test函數(shù)綁定為obj1
// 箭頭函數(shù)取決于其外部代碼塊綁定的this
// 因此后面再執(zhí)行也不會改變this的綁定
箭頭函數(shù)內(nèi)部的this
會綁定為其定義時的所在的對象庄蹋,其原因為箭頭函數(shù)內(nèi)部沒有this
,因此它的this
為它外層代碼塊的this藻治。同時因為它沒有this
,箭頭函數(shù)不能作為構(gòu)造函數(shù)使用巷挥,會拋出錯誤桩卵。
參考:
http://es6.ruanyifeng.com/#docs/function#箭頭函數(shù)