以上是组合式继承
,其实完全没必要Student.prototype=new Person()
只需要使用Student.prototype=Object.create(Person.prototype),我们称这种方式为寄生组合式继承。
寄生组合式继承
:使用了两个技术:
- 利用
原型链技术
,来实现构造函数过程的复用
,(明明Person上已经this.name=name;this.age=age,Student也有这些特征,应该不需要再写了,使用call
,改变this指向就实现了) - 使用
Object.create()
改变Student.prototype,是其原型指向Person,来实现方法的继承.
Object.create()做了两件事:
- 创建了一个对象;
- 将传递的参数作为原型。
class 的extends
继承