寄生组合式继承通过object.create(parent.prototype)建立原型链,避免父构造函数执行和方法重复挂载,所有实例共享原型方法,节省内存且支持按需初始化。
寄生组合式继承在规避内存浪费方面,核心优势在于它只复用父类方法,不重复创建实例属性和原型方法副本。
避免父类方法被多次复制
构造函数继承(如直接用 Parent.call(this))虽能隔离实例属性,但若单独使用,每次新建子类实例时,父类方法都会被重新挂载到实例上——这导致相同逻辑在内存中存在多份。寄生组合式继承把方法统一放在原型链上,所有实例共享同一套方法,节省大量内存。
不执行父类构造函数来创建原型
组合继承中,子类原型通过 new Parent() 设置,会真实执行一次父构造函数,造成无意义的初始化(比如新建数组、绑定事件、创建 DOM 节点等)。寄生组合式继承改用 Object.create(Parent.prototype),仅建立原型链关系,不触发构造函数,彻底跳过这部分开销。
不拷贝、不遍历、不污染原型
常见误区是用 Object.assign(Child.prototype, Parent.prototype) 或手动遍历赋值,这会把父类原型上的方法“平铺”到子类原型,破坏原型链查找机制,还可能漏掉不可枚举属性(如 toString)。寄生组合式继承保持干净的原型链,方法始终通过委托访问,既高效又可动态更新。
支持按需初始化,减少冗余逻辑
父类中耗资源的初始化操作(如网络请求、定时器、大型对象生成)通常不应在设置原型时运行。寄生组合式继承让这些逻辑只在 Parent.call(this) 中执行,且仅限当前实例需要时才触发,避免全局性浪费。










