ES5 的继承和ES6的继承区别?

javaScript


ES5 继承机制: 先创建子类的实例对象,然后在将父类的方法添加到 this 上 (Parent.apply(this))
ES6 继承机制: 先创建父类的实例对象 this (必须先调用父类的 super() 方法),然后再用子类的构造函数修改this

具体:ES6 通过 class 关键字定义类,里面有构造方法,类之间通过 extends 关键字实现继承,子类必须在 constructor 方法中调用 super 方法,否则新建实例报错。因为子类没有自己的 this 对象,而是继承了父类的 this 对象, 然后对其进行加工,如果不调用 super 方法,子类得不到 this 对象

PS: super 关键字指父类的实例,即父类的 this 对象,子类中写 constructor 就必须要有 super关键字, 没有的话系统会隐士调用。