1. 程式人生 > 程式設計 >JavaScript類的繼承多種實現方法

JavaScript類的繼承多種實現方法

類的繼承

1 子承父業

extends(繼承父類的普通函式)(方法)

class Father {
      constructor() {
      }
      money() {
        console.log(100);  
      }
    }
    class Son extends Father {
    }
    class sunzi extends Son {

    }
    var yxf = new Father;
    var lbw = new Son;
    var bb = new sunzi;
    console.log(yxf.money());
    console.log(lbw.money());
    console.log(bb.money());

super的用法

用於訪問和呼叫物件父類上的函式。可以呼叫父類的建構函式,也可以呼叫父類的普通函式(方法)

class Father1 {
      constructor(x,y) {
        this.x = x;
        this.y = y;
      }
      sum() {
        console.log(this.x + this.y);
      }
    }
    class Son1 extends Father1 {
      constructor(x,y){
        super(x,y);
      }
    }
    var yxf = new Son1(1,2);
    yxf.sum();

super關鍵字呼叫就近原則

<script>
    //super關鍵字呼叫父類普通函式
    class Father {
      say() {
        return '我是爸爸';
      }
    }
    class Son extends Father {
      say() {
      //   return '我是兒子';
      console.log( super.say());
      
      }
    }
    var yxf = new Son();
    yxf.say();//返回結果:我是兒子 就近原則
    //繼承中的屬性或方法查詢原則:就近原則
    //1.繼承中,如果例項化子類輸出一個方法,先看子類有沒有這個方法,如果有就先執行子類;
    //2.繼承中,如果子類裡面沒有,就去查詢父類有沒有如果有就用父類
  </script>

子類繼承父類,同時擴充套件自己的方法

注意:子類子建構函式使用super 必須放到this的前面(必須先呼叫父類的構造方法 再使用子類的構造方法)父親永遠是第一位的!!!!

<script>
    class Father {
      constructor(x,y){
        this.x = x;
        this.y = y;
      }
      sum() {
        console.log(this.x + this.y);
      }
    }
    // 子類繼承父類加法 同時擴充套件減法
    class Son extends Father {
      constructor(x,y) {
        //利用super呼叫父類的建構函式
        //super 必須在子類this之前呼叫
        super(x,y);
        this.x = x;
        this.y = y;
      }
      sub() {
        console.log(this.x - this.y);
      }
    }
    var son = new Son(1,2);
    son.sum();
    son.sub();
  </script>
 <script>
    //super關鍵字呼叫父類普通函式
    class Father {
      say() {
        return '我是爸爸';
      }
    }
    class Son extends Father {
      say() {
      //   return '我是兒子';
      console.log( super.say());
      }
    }
    var yxf = new Son();
    yxf.say();//返回結果:我是兒子 就近原則
    //繼承中的屬性或方法查詢原則:就近原則
    //1.繼承中,如果例項化子類輸出一個方法,先看子類有沒有這個方法,如果有就先執行子類;
    //2.繼承中,如果子類裡面沒有,就去查詢父類有沒有如果有就用父類
  </script>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。