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