ES5的继承时通过prototype或构造函数机制来实现。ES5的继承实质上是先创建子类的实例对象,然后再将父类的方法添加到this上(Parent.apply(this))。
ES6的继承机制完全不同,实质上是先创建父类的实例对象this(所以必须先调用父类的super()方法),然后再用子类的构造函数修改this。
具体的:ES6通过class关键字定义类,里面有构造方法,类之间通过extends关键字实现继承。子类必须在constructor方法中调用super方法,否则新建实例报错。因为子类没有自己的this对象,而是继承了父类的this对象,然后对其进行加工。如果不调用super方法,子类得不到this对象。
ps:super关键字指代父类的实例,即父类的this对象。在子类构造函数中,调用super后,才可使用this关键字,否则就会报错
本文深入探讨了ES5与ES6在继承方面的差异。在ES5中,继承通过prototype或构造函数实现,子类实例先创建,再附加父类方法。而ES6采用class和extends关键字,子类必须先调用super()获取this对象,再进行实例化。super关键字在子类构造函数中用于引用父类的实例,确保this的正确使用。
2509

被折叠的 条评论
为什么被折叠?



