題目:
箭頭函數(shù)和普通函數(shù)有什么區(qū)別怕吴?
箭頭函數(shù)為什么不能用作構(gòu)造函數(shù)?
參考答案
區(qū)別:
- 箭頭函數(shù)在一些情況下書寫更簡潔(如只有一個(gè)參數(shù)县踢、函數(shù)體直接返回值時(shí)候)。
- 箭頭函數(shù)沒有自己的this伟件,箭頭函數(shù)內(nèi)的this變量指向外層非箭頭函數(shù)的函數(shù)的this硼啤,或者將該箭頭函數(shù)作為屬性的對象。箭頭函數(shù)也不支持call()/apply()函數(shù)特性斧账。
- 箭頭函數(shù)內(nèi)部不可以使用arguments對象谴返。
- 箭頭函數(shù)不可以當(dāng)做構(gòu)造函數(shù)煞肾。
為什么不能用作構(gòu)造函數(shù):
- 構(gòu)造函數(shù)是通過new關(guān)鍵字來生成對象實(shí)例,生成對象實(shí)例的過程也是通過構(gòu)造函數(shù)給實(shí)例綁定this的過程嗓袱,而箭頭函數(shù)沒有自己的this籍救。
- 創(chuàng)建對象過程渠抹,new 首先會創(chuàng)建一個(gè)空對象蝙昙,并將這個(gè)空對象的proto指向構(gòu)造函數(shù)的prototype,從而繼承原型上的方法梧却,但是箭頭函數(shù)沒有prototype奇颠。
- 因此不能使用箭頭作為構(gòu)造函數(shù),也就不能通過new操作符來調(diào)用箭頭函數(shù)