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