在前一篇的文章里我们写了利用原型链实现面向对象中的类和继承的功能,但是利用原型链的写法毕竟和普遍上的面向对象语言的写法有很大的不同,所以在ES6中就实现了JavaScript语言里真正的类和继承
在ES5的语言里,我们总是使用构造函数来达到类的功能,然后通过new一个实例具有构造函数的所有共有属性
在ES6的语法中新增了关键字class
我们可以使用console.log输出一下就会发现:
这两种写法结果世界上是相同的
使用ES6实现继承
在上一节我们讲到使用原型链实现继承是将子类的构造函数的原型对象等于父类的一个实例
在ES6中我们可以使用extends达到相同的效果
使用继承的方式,子类就拥有了父类的方法。
如果子类中有constructor构造函数,则必须使用调用super。
子类必须在constructor方法中调用super方法,否则新建实例时会报错(this is not defined)。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象。
领取专属 10元无门槛券
私享最新 技术干货