ES6 類繼承 和 super的使用

ES6繼承 詳細類容參考:http://es6.ruanyifeng.com/#do...html

一、super()使用es6

class A {
    construcor(a, b) {
        this.a = a;
        this.b = b;
    }
}

class B extends A {
    constructor(x, y, z) {
        super(x, y);
        this.z = z;
        console.log(x, '---', y, '----', z, '----');
    }
}

let b = new B(1, 2, 8);
// 1 "---"  2  "----" 8 "----"

注意:ES6中繼承的子類中,若是使用構造函數constructor()那麼就必須使用 super()方法初始化,這樣下面才能夠調用this關鍵字。super()只能用在子類的構造函數之中,用在其餘地方就會報錯。數組

子類必須在constructor方法中調用super方法,不然新建實例時會報錯。這是由於子類本身的this對象,必須先經過父類的構造函數完成塑造,獲得與父類一樣的實例屬性和方法,而後再對其進行加工,加上子類本身的實例屬性和方法。若是不調用super方法,子類就得不到this對象。 ---阮一峯app

二、父類中的靜態方法,子類中能夠經過類名直接調用函數

class A2 {
    static hello() {
        console.log("hello world");
    }
}

class B2 extends A2 {
    constructor() {
        super();
    }
}

B2.hello();
// hello world

三、Object.getPrototypeOf()判斷子類繼承的父類this

Object.getPrototypeOf(B2);
    // A2
經過apply打印變化參數的log
Log() {
    console.log.apple(console, arguments);
}
當參數數量不肯定時,函數內部也能夠經過 arguments 這個僞數組來遍歷全部的參數。

js apply() call() bind() 深刻理解 好文推薦:http://www.cnblogs.com/coco1s...code

相關文章
相關標籤/搜索