ES6繼承 詳細類容參考:http://es6.ruanyifeng.com/#do...
1、super()使用
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對象。 ---阮一峯
2、父類中的靜態方法,子類中可以通過類名直接調用
class A2 {
static hello() {
console.log("hello world");
}
}
class B2 extends A2 {
constructor() {
super();
}
}
B2.hello();
// hello world
3、Object.getPrototypeOf()判斷子類繼承的父類
Object.getPrototypeOf(B2);
// A2