1. 程式人生 > >ES6函式學習雜記

ES6函式學習雜記

  1. 將現有的"普通"函式轉換為箭頭函式只需幾步:刪掉關鍵字 function -》 刪掉圓括號  -》 刪掉左右花括號  -》 刪掉關鍵字 return  -》 刪掉分號  -》 在引數列表和函式主體之間新增一個箭頭(=>

  2. 普通函式可以是函式宣告函式表示式,但是箭頭函式始終是表示式。因此僅在表示式有效時才能使用:儲存在變數中、當做引數傳遞給函式、儲存在物件的屬性中

  3. 如果列表中有兩個或多個引數,或者有零個,則需要將引數列表放在圓括號內

  4. 箭頭函式使用周圍上下文判斷它裡面的 this 指的是什麼

  5. 函式提供了預設函式引數;可與解構結合

  6. 與陣列預設值相比,物件預設值具備的一個優勢是能夠處理跳過的選項

  7. //ES5寫法
    
    function Plane(numEngines) {
      this.numEngines = numEngines;
      this.enginesActive = false;
    }
    
    // 由所有例項 "繼承" 的方法
    Plane.prototype.startEngines = function () {
      console.log('starting engines...');
      this.enginesActive = true;
    };
    
    const richardsPlane = new Plane(1);
    richardsPlane.startEngines();
    
    const jamesPlane = new Plane(4);
    jamesPlane.startEngines();
    
    //ES6寫法
    
    class Plane {
      constructor(numEngines) {
        this.numEngines = numEngines;
        this.enginesActive = false;
      }
    
      startEngines() {
        console.log('starting engines…');
        this.enginesActive = true;
      }
    }
  8. 在類中,不用逗號來區分屬性或方法

  9. 要新增靜態方法,請在方法名稱前面加上關鍵字 static,成為類中可以直接訪問的方法

  10. 在建立 JavaScript 類的新例項時,必須使用關鍵字 new

  11. super 和 extends 關鍵字擴充套件類。要讓子類可以訪問到父類,需要使用關鍵字 super

    class Tree {
      constructor(size = '10', leaves = {spring: 'green', summer: 'green', fall: 'orange', winter: null}) {
        this.size = size;
        this.leaves = leaves;
        this.leafColor = null;
      }
    
      changeSeason(season) {
        this.leafColor = this.leaves[season];
        if (season === 'spring') {
          this.size += 1;
        }
      }
    }
    
    class Maple extends Tree {
      constructor(syrupQty = 15, size, leaves) {
        super(size, leaves);
        this.syrupQty = syrupQty;
      }
    
      changeSeason(season) {
        super.changeSeason(season);
        if (season === 'spring') {
          this.syrupQty += 1;
        }
      }
    
      gatherSyrup() {
        this.syrupQty -= 3;
      }
    }
    
    const myMaple = new Maple(15, 5);
    myMaple.changeSeason('fall');
    myMaple.gatherSyrup();
    myMaple.changeSeason('spring');
  12. super 必須在 this 之前被呼叫