ECMAScript 2021: 从原型继承到 class 继承

在 JavaScript 中,继承是一个重要的概念,它允许我们从一个对象(父对象)继承属性和方法到另一个对象(子对象)。在早期的 JavaScript 中,继承是通过原型链实现的,但是随着 JavaScript 的发展,ES6 引入了 class 关键字来实现继承。在 ECMAScript 2021 中,class 继承已经成为了主流。

原型继承

在 JavaScript 中,每个对象都有一个原型(prototype)对象,它包含了一些属性和方法。当我们访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,JavaScript 就会沿着原型链向上查找,直到找到该属性或方法为止。

原型继承是通过将一个对象的原型设置为另一个对象来实现的。例如,我们可以创建一个 Animal 类型的对象,并将其原型设置为一个 Mammal 类型的对象,这样 Animal 对象就可以继承 Mammal 对象的属性和方法。

-------- -------- -
  ------------- - -----
-

---------------- - -
  -------- ---------- -
    ------------------- --- ---------
  -
--

-------- -------- -
  ------------- - -----
-

---------------- - --- ---------

----- --- - --- ---------
-------------------------- -- ----
-------------- -- ------ --- ------

在上面的例子中,我们定义了一个 Mammal 类型的对象,并将其原型设置为一个包含 breathe 方法的对象。然后,我们定义了一个 Animal 类型的对象,并将其原型设置为 Mammal 对象。最后,我们创建了一个 Animal 对象,并检查了它是否具有 Mammal 对象的属性和方法。

class 继承

在 ES6 中,我们可以使用 class 关键字来定义类,这使得 JavaScript 的面向对象编程更加清晰和易于理解。class 继承是通过使用 extends 关键字来实现的,它允许一个类继承另一个类的属性和方法。

----- ------ -
  ------------- -
    ------------- - -----
  -

  --------- -
    ------------------- --- ---------
  -
-

----- ------ ------- ------ -
  ------------- -
    --------
    ------------- - -----
  -
-

----- --- - --- ---------
-------------------------- -- ----
-------------- -- ------ --- ------

在上面的例子中,我们定义了一个 Mammal 类和一个 Animal 类,并使用 extends 关键字将 Animal 类继承自 Mammal 类。Animal 类的构造函数调用了 super(),这会调用父类的构造函数,并将 this 对象传递给它。这样,我们就可以在 Animal 类中使用 Mammal 类的属性和方法。

总结

在 ECMAScript 2021 中,class 继承已经成为了主流,它使得 JavaScript 的面向对象编程更加清晰和易于理解。尽管原型继承仍然是一个重要的概念,但是使用 class 继承可以使代码更加简洁和易于维护。在编写 JavaScript 代码时,我们应该根据实际情况选择合适的继承方式。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6603be91d10417a2220392f5