实现一个JS寄生式继承
时间: 2024-01-18 22:45:32 浏览: 29
寄生式继承指的是创建一个函数,该函数在内部以某种方式增强对象,然后返回该对象。以下是实现一个JS寄生式继承的代码示例:
```javascript
function inheritPrototype(subType, superType) {
// 复制父类原型链
var prototype = Object.create(superType.prototype);
// 增强子类原型链
prototype.constructor = subType;
subType.prototype = prototype;
}
function SuperType(name) {
this.name = name;
}
SuperType.prototype.sayName = function() {
console.log(this.name);
};
function SubType(name, age) {
SuperType.call(this, name);
this.age = age;
}
inheritPrototype(SubType, SuperType);
SubType.prototype.sayAge = function() {
console.log(this.age);
};
var instance = new SubType("Tom", 20);
instance.sayName(); // Tom
instance.sayAge(); // 20
```
在上述代码中,我们定义了两个构造函数:`SuperType`和`SubType`,并且我们想让`SubType`继承`SuperType`的原型链。我们首先定义了一个`inheritPrototype`函数,该函数接收两个参数,分别是子类和父类。该函数的作用是将子类的原型链指向一个新的对象,该对象的原型链指向父类的原型链。最后,我们在`SubType`的原型上增加了一个`sayAge`方法,并且在`SubType`的构造函数中调用了`SuperType`的构造函数来继承父类的属性。最后,我们通过`new`关键字创建了`SubType`的一个实例,并且调用了`sayName`和`sayAge`方法来验证寄生式继承是否成功。