【JS】箭頭函數與普通函數(function)的區別是什么?


箭頭函數是普通函數的簡寫,可以更優雅的定義一個函數,和普通函數相比,有以下幾點差異:

1、函數體內的 this 對象,就是定義時所在的對象,而不是使用時所在的對象。

2、不可以使用 arguments 對象,該對象在函數體內不存在。如果要用,可以用 rest 參數代替。

3、不可以使用 yield 命令,因此箭頭函數不能用作 Generator 函數。

4、不可以使用 new 命令,因為:

沒有自己的 this,無法調用 call,apply。
沒有 prototype 屬性 ,而 new 命令在執行時需要將構造函數的 prototype 賦值給新的對象的 proto
new 過程大致是這樣的:

function newFunc(father, ...rest) {
  var result = {};
  result.__proto__ = father.prototype;
  var result2 = father.apply(result, rest);
  if (
    (typeof result2 === 'object' || typeof result2 === 'function') &&
    result2 !== null
  ) {
    return result2;
  }
  return result;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM