JavaScript 继承模式详解:原型式、寄生式与寄生组合式
本文深入解析 JavaScript 中除组合继承外的几种核心继承模式。详细阐述原型式继承中 Object.create() 的规范用法,介绍寄生式继承通过增强原型对象实现自定义属性的方法,并重点讲解寄生组合式继承如何结合构造函数与原型链,有效避免组合继承中父类构造函数被调用两次的问题,从而优化性能与内存使用。
JavaScript 继承模式概述
前文已对组合继承进行了介绍,本节将继续探讨其余几种常见的继承实现方式。
原型式继承与 Object.create
原型式继承
该方法通过调用一个函数,获取其返回的对象。此返回对象的原型指向传入该函数的参数对象,从而实现原型链的复用。
具体示例如下:
function personObject(o){
function F(){}
F.prototype = o;
return new F();
}
var person = {
name:"Nicholas",
friends:["Shelby","Court","Van"]
}
var person_one = personObject(person);
上述代码展示了 person 对象作为 person_one 的原型这一关系。ES5 标准引入了 Object.create() 方法来规范化原型式继承。该方法接受两个参数:第一个参数指定新对象的原型(如示例中的 person),第二个参数用于定义新对象的额外属性,此参数为可选。
示例代码如下:
var person_one = Object.create(person, {
name: {
value:"Jon"
}
});
当仅需让一个对象与另一个对象保持相似的结构或行为时,可采用原型式继承。
寄生式继承的实现
寄生式继承
其实现逻辑是在函数内部执行一次原型式继承,随后为接收到的对象添加自定义的属性和方法,以增强其功能。
代码示例如下:
function createAnother(o){
var person_one = personObject(o);
person_one.sayHi = function(){
alert(" hi ");
}
return person_one;
}
寄生组合式继承优化
寄生组合式继承
组合继承存在一个显著缺点,即父类构造函数会被调用两次。寄生组合式继承旨在解决此问题,它通过构造函数实现属性的继承,而原型方法则通过寄生式继承的方式获取,从而避免了重复调用。
实现代码如下:
function inherit(subType, superType){
var prototype = Object(superType.prototype);
prototype.constructor = subType;
subType.prototype = prototype;
}
通过调用上述函数,可使 subType.prototype 的原型指向 superType.prototype,进而完成原型方法的继承。
以上内容为关于 JavaScript 继承模式的完整解析,希望能为读者提供参考与帮助。
D3.js 比例尺与坐标轴的配置详解
2026-11-05 16:54:46
JavaScript怎么遍历对象的Symbol键和不可枚举属性
2026-11-05 13:13:39
封装一个健壮的JS字符串判空工具函数
2026-11-05 12:16:14
JavaScript合并数组的三种常用方法:concat、扩展运算符与push
2026-11-05 11:22:29
JavaScript立即执行函数(IIFE)是什么及基本语法
2026-11-05 10:51:19
