2026-10-23 13:35:38
JavaScript中的继承方式主要包括以下六种:
1. 原型链继承
实例可继承父类构造函数属性、父类原型属性。
缺点:无法向父类传参,所有实例共享父类实例属性(引用类型会被篡改),继承单一。
2. 借用构造函数继承(经典继承)
可继承父类构造函数属性,支持传参和多继承(通过多次call)。
缺点:无法继承父类原型属性,每次创建实例需重复调用父类构造函数,导致性能浪费。
3. 组合继承(最常用)
可继承父类原型属性、构造函数属性,支持传参。
缺点:需调用两次父类构造函数(耗内存),子类原型会覆盖父类实例属性。
4. 原型式继承
简单复制父类实例属性,适合无需构造函数的场景。
缺点:实例共享原型属性,无法复用父类方法。
5. 寄生式继承
无需自定义类型,直接返回增强后的对象。
缺点:与原型式继承类似,无法复用且共享属性。
6. 寄生组合式继承(理想方式)
仅调用一次父类构造函数,避免属性重复。
优点:高效且完整继承原型链和构造函数属性。
ES6的class与extends
总结:组合继承和寄生组合式继承是传统开发中的主流方案,而ES6的class语法简化了继承的实现。