前端 JavaScript 进阶面试题, JavaScript 中如何实现寄生组合继承?
前端 JavaScript 进阶面试题, JavaScript 中如何实现寄生组合继承?
QA
Step 1
Q:: JavaScript 中如何实现寄生组合继承?
A:: 寄生组合继承是 JavaScript 中一种实现继承的方式,旨在避免传统组合继承中的效率问题。具体实现方法如下:
function inheritPrototype(subType, superType) {
var prototype = Object.create(superType.prototype); // 创建对象
prototype.constructor = subType; // 增强对象
subType.prototype = prototype; // 指定对象
}
function SuperType(name) {
this.name = name;
this.colors = ['red', 'blue', 'green'];
}
SuperType.prototype.sayName = function() {
console.log(this.name);
};
function SubType(name, age) {
SuperType.call(this, name); // 第二次调用 SuperType
this.age = age;
}
inheritPrototype(SubType, SuperType);
SubType.prototype.sayAge = function() {
console.log(this.age);
};
这种方式通过 Object.create
创建一个以父类原型为原型的对象,并将这个对象赋值给子类的原型,从而避免了在子类构造函数中第二次调用父类构造函数。
用途
面试中考察寄生组合继承的实现方式,是为了了解候选人对 JavaScript 继承机制的掌握情况。寄生组合继承解决了传统组合继承中的一些效率问题,特别是避免了多次调用父类构造函数带来的不必要开销。在实际生产环境中,当我们需要进行对象继承并且希望优化性能时,会用到这种继承方式。例如,在复杂的面向对象编程中,需要确保子类能够正确继承父类的属性和方法,并且希望提高代码的执行效率。\n相关问题
🦆
JavaScript 中的原型链是什么?▷
🦆
JavaScript 中的 call 和 apply 方法有什么区别?▷
🦆
什么是 JavaScript 闭包?▷