寄生组合式继承执行开销极低,核心是解耦原型链建立与实例属性初始化:仅一次父类构造调用(实例化时触发),避免冗余计算、对象污染及提前执行耗时逻辑;object.create(parent.prototype)轻量稳定,不执行构造函数、不产生中间实例、高度优化;相比其他方式更省资源且不破坏原型链。

寄生组合式继承的执行开销非常低,核心在于它把“原型链建立”和“实例属性初始化”彻底解耦,避免了任何冗余计算与对象污染。
只调用一次父类构造函数,且仅在必要时
父类构造函数(如 Parent(name))不会在设置原型时执行,只在子类实例化过程中由 Parent.call(this, name) 触发一次。这意味着:
- 初始化大型数组、绑定事件、创建 DOM 节点等耗时逻辑,不会在定义类时提前运行;
- 没有为构建原型而“白跑一趟”的构造函数调用,省去无意义的内存分配与副作用;
- 所有子类实例的
this属性(包括引用类型)彼此独立,无需后续覆盖或清理。
原型链建立过程轻量稳定Object.create(Parent.prototype) 本质是创建一个空对象,并将其 [[Prototype]] 直接指向 Parent.prototype。这个操作:
- 不执行任何构造函数,不遍历属性,不拷贝方法;
- 不产生中间实例(对比
new Parent()会真实构造一个临时对象并挂载this.colors = [...]等属性); - 在现代引擎中被高度优化,V8 对
Object.create有专用快速路径,甚至可内联为指针赋值。
相比其他继承方式更省资源
- 比组合继承少一次
Parent构造调用,避免原型上多出一份colors数组、重复name字符串等; - 比混入式(如
Object.assign(Child.prototype, Parent.prototype))不破坏原型链,不丢失不可枚举属性,也不阻断后续对Parent.prototype的动态更新; - 比纯构造函数继承(只用
Parent.call(this))不重复挂载方法到每个实例,所有方法仍复用原型,节省大量内存。
不复杂但容易忽略











