ECMAScript 2021 中的 class 与继承详解

阅读时长 6 分钟读完

在 ECMAScript 2021 中,class 和继承是非常强大的语言特性,可以帮助开发者更加方便地编写可重用、可维护的代码。本文将介绍 class 和继承的概念、如何使用它们以及如何运用它们编写高质量的代码。

class

class 是 ECMAScript 中的一种新型对象声明语法,可以帮助开发者更好地组织代码、封装数据和行为。通过 class,开发者可以创建自定义的对象,并在其中定义属性和方法。

定义 class

class 的基本语法如下:

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

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

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

其中,包含三种内容:

  • 构造函数
  • 实例方法
  • 静态方法

在 class 中定义的属性和方法,可以分为两种:

  • 实例属性和方法:只有通过 new 关键字创建实例后,才能使用实例属性和实例方法。
  • 静态属性和方法:只有通过类名调用,才能使用静态属性和静态方法。

构造函数

在 class 中,构造函数是一个特殊的方法,用于定义对象的初始化操作。其定义方式如下:

在构造函数中,可以使用 this 关键字来引用当前实例,从而初始化实例属性。例如:

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

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

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

实例方法

在 class 中,可以定义实例方法来实现对象的行为。实例方法的定义方式与普通函数相同,如下所示:

在方法体中,可以使用 this 来引用当前实例属性。例如:

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

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

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

静态方法

在 class 中,可以定义静态方法来实现与类相关的行为。静态方法的定义方式如下:

静态方法可以通过类名来调用,无法通过实例对象来调用。例如:

继承

继承是面向对象编程中的重要概念之一,它可以帮助开发者构建更加复杂的对象体系。在 ECMAScript 中,可以通过 class 的继承机制来实现对象的继承。继承的基本思路是,定义一个基类,然后通过继承的方式来创建其他类。

定义基类

在 ECMAScript 中,可以通过 class 来定义一个基类。基类可以包含属性和方法。定义基类的方式与定义普通 class 相同,如下所示:

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

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

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

在上述代码中,Animal 类继承了类中的属性和方法。

继承基类

在 ECMAScript 中,可以通过 extends 关键字来实现 class 的继承。子类可以继承父类的属性和方法,并在此基础上扩展自己的属性和方法。子类定义的方式如下:

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

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

在子类定义中,使用 extends 关键字指定父类,并使用 super 关键字来调用父类的构造函数。在子类自己的构造函数中,可以初始化子类自己的属性。例如:

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

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

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

在上述代码中,Dog 类继承了 Animal 类中的属性和方法,并通过自己的 bark 方法进行了扩展,最终实现了创建一个 Dog 对象。

调用父类方法

在子类中,可以通过 super 关键字来调用父类中的方法。例如:

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

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

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

在上述代码中,Cat 类继承了 Animal 类中的 shout 方法,并在自己的 shout 方法中调用了父类的 shout 方法,从而生成了输出。

结论

在 ECMAScript 2021 中,class 和继承是编写可重用、可维护的代码的强大工具。通过 class,开发者可以更好地组织代码、封装数据和行为。通过继承,可以构建更加复杂的对象体系,并实现代码的重用和扩展。在开发过程中,建议开发者多加实践,熟练掌握 class 和继承的使用特点,从而提升自己的代码质量和效率。

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

纠错
反馈