理解 ES2015 中新增的 class 关键字

阅读时长 4 分钟读完

在 ES2015 中,引入了 Class 关键字用于定义类,更好地支持面向对象编程。Class 在语法上更具可读性,同时也有着更完整,更严格的语义。它不仅提供了现有的原型继承方式的一个替代,而且使面向对象编程变得更加容易理解和实现。

Class 基础语法

下面是一个简单的 Class 示例:

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

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

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

这里我们定义了一个名为 Person 的类,它有两个属性 nameage,两个方法 constructorgreet。属性是定义在实例上的,而方法是定义在原型上的。

在 Class 中,我们使用 constructor 方法来构造实例对象,同时也可以在该方法中初始化实例属性。这个方法在实例化时自动调用。

实例的方法是通过原型实现的,因此它们只存在于类的原型对象中,而不是每个对象的实例本身上。

继承

Class 还支持继承功能,让我们可以轻松地构建出有层次关系的 Class。

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

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

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

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

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

这里,我们定义了一个名为 Animal 的基类,并让 Bird 继承了 Animal,通过 super 关键字调用了基类构造方法。我们给 Bird 定义了一个额外的属性 name 和一个方法 fly

我们创建了一个实例 eagle,并调用了它从基类继承来的 move 方法和自己具有的 fly 方法。

静态方法

Class 还支持在类上定义方法,而不需要实例化一个对象。这些方法被称为静态方法,它们不允许被实例化对象调用,而只能被类自身调用。

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

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

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

这里,我们定义了一个叫做 distance 的静态方法,通过 Point.distance 调用它。

总结

Class 是 ES2015 中新增加的一个功能,它提供了更具可读性和更严格的语义。它能够帮助我们更好地支持面向对象编程。我们可以使用它来定义类,实现继承,定义静态方法等。这种新语法不仅可以使代码更加简洁,而且可以使代码更具可读性,使其更容易维护和重构。

当然,你也可以不使用 Class,使用定义构造函数和扩展原型的方式来实现面向对象编程,但是 Class 语法带来的更完整,更严格的语义可以使得程序更加易于理解、维护和扩展。

以上就是 ES2015 中 Class 的基础语法和应用示例,希望能够帮助你更好地理解和掌握。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647d7470968c7c53b083de9e

纠错
反馈