为解决原型中包含引用类型值所带来的问题, 我们使用一种叫做 借用构造函数的技术。这种技术的基本思想:在子类构造函数内部调用超类型构造函数。通过使用apply()和call()方法可以在新创建的子类对象上执行构造函数。在上述例子中,实际上是在新创建的SubType实例的环境下调用了SuperType的构造函数。对于原型链来讲,借用构造函数有一个很大的优势,即可以在子类型构造函数中想超类型构造函数传递参数。方法都在构造函数中定义,因此函数复用就无从谈起了。组合继承, 有时候也叫作伪经典继承, 指的是将原型链和借用构造函数的技术组合到一起。在这个例子中, SuperType构造函数定义了两个属性: name和colors。SubType构造函数在调用SuperType构造函数时传入了name参数,定义了他自己的属性age。

浅谈JS继承_借用构造函数 & 组合式继承

浅谈JS继承_借用构造函数 & 组合式继承

浅谈JS继承_借用构造函数 & 组合式继承