返回

巧用这 6 种 JavaScript 继承方式,提升你的代码水平!

前端

在 JavaScript 中,继承是创建新对象并从现有对象获取属性和方法的一种强大机制。通过继承,我们可以创建代码复用性高且可维护性强的应用程序。

在本篇博客中,我们将继续探索前一篇讨论的 3 种继承方式之外的另外 3 种继承方式。其中,最值得关注的是寄生组合式继承,它结合了多种继承方法的优点,创造了最理想的继承方式。

4. 原型式继承

原型式继承通过使用内置的 Object.create() 方法来解决原型链无法传参的问题。与构造函数继承不同,原型式继承无需使用构造函数,从而避免了构造函数的问题。

const parent = {
  name: "Parent",
};

const child = Object.create(parent);
child.name = "Child";

console.log(child.name); // "Child"
console.log(child.hasOwnProperty("name")); // true

5. 寄生式继承

寄生式继承通过创建一个新的对象,将父对象的属性和方法添加到新对象中,从而实现继承。这种方法可以自由地修改属性和方法,因此非常灵活。

const parent = {
  name: "Parent",
};

const child = (function (parent) {
  const obj = Object.create(null);
  obj.name = "Child";
  return obj;
})(parent);

console.log(child.name); // "Child"
console.log(child.hasOwnProperty("name")); // true

6. 寄生组合式继承

寄生组合式继承结合了构造函数继承和寄生式继承的优点,创建了最理想的继承方式。它既可以访问构造函数,又能灵活地修改属性和方法。

const parent = function (name) {
  this.name = name;
};

const child = (function (parent) {
  const F = function () {};
  F.prototype = parent.prototype;
  const obj = new F();
  obj.name = "Child";
  return obj;
})(parent);

console.log(child.name); // "Child"
console.log(child instanceof parent); // true

结论

通过探索这 6 种 JavaScript 继承方式,我们了解了它们各自的优势和局限性。掌握这些继承方式对于提升代码的可复用性、可维护性和扩展性至关重要。根据具体需求选择合适的继承方式,可以大幅提高应用程序的质量。