寄生式继承(Parasitic Inheritance):创建一个仅用于封装继承过程的函数,在函数内部以某种方式增强对象
function creator(origin) {// 以 origin 为原型对象创建一个新对象let clone = Object.create(origin);// 以某种方式来增强这个对象clone.sayHi = function () {console.log('Hello world!');};// 返回这个对象return clone;}let friendship = {name: 'Uzi',friends: ['Amy', 'Ben', 'Tom'],};// 具有实例的原型person的所有属性和方法,也有自己的方法let uzi = creator(friendship);uzi.sayHi();// Hello world!
在主要考虑对象而 不是自定义类型和构造函数的情况下,寄生式继承也是一种有用的模式。前面示范继承模式时使用的 Object
函数不是必需的,任何能够返回新对象的函数都适用于此模式。
⚠️ 注意: 使用寄生式继承来为对象添加函数,会由于不能做到函数复用而降低效率;这一点与借用构造函数模式类似。