-
箭頭函數的this值在聲明時就確認了,普通函數的this值,在調用的時候確認
-
call、apply、bind不會改變箭頭函數this值,會改變普通函數this值
-
箭頭函數不能作為構造函數使用,不能使用new
-
箭頭函數沒有原型屬性
-
箭頭函數不綁定arguments,取而代之用rest參數... 解決
-
箭頭函數不能當做Generator函數,不能使用yield關鍵字
為什么箭頭函數不能構造實例對象
// 構造函數生成實例的過程
function Person(name,age){
this.name = name
this.age = age
}
var p = new Person('張三',18)
//new關鍵字生成實例過程如下
// 1. 創建空對象p
var p = {}
// 2. 將空對象p的原型鏈指向構造器Person的原型
p.__proto__ = Person.prototype
// 3. 將Person()函數中的this指向p
// 若此處Person為箭頭函數,而沒有自己的this,call()函數無法改變箭頭函數的指向,也就無法指向p。
Person.call(p)
構造函數是通過 new 關鍵字來生成對象實例,生成對象實例的過程也是通過構造函數給實例綁定 this 的過程,而箭頭函數沒有自己的 this。因此不能使用箭頭作為構造函數,也就不能通過 new 操作符來調用箭頭函數。
