如何使用 ES10 中的类 (class) 成员修饰符优化代码

阅读时长 6 分钟读完

随着 JavaScript 语言的发展,类 (class) 成为了 JavaScript 中的一个重要概念。在 ES6 中,我们已经可以使用 class 来实现面向对象编程。而在 ES10 中,我们又增加了一些 class 成员修饰符,这些修饰符可以更好地优化代码。本文将详细介绍这些成员修饰符的使用方法。

成员修饰符是什么?

成员修饰符是指 class 中用来修饰 class 成员的关键字,包括:public、private 和 protected。这些关键字主要用于限制访问成员的方式,以提高代码的可读性和可维护性。

  • public:公有成员,可以被任何代码访问。默认情况下,所有的成员都是 public 的。
  • private:私有成员,只能在 class 内部被访问。私有成员前面加上一个 # 符号。
  • protected:受保护成员,只能在 class 内部和其子类中被访问。受保护成员前面加上一个 _ 符号。

使用 private 和 protected 成员修饰符

在 JavaScript 中,我们通常使用下划线来表示私有成员。但实际上,这样只是一个约定而已,并没有真正的私有化。而在 ES10 中,我们可以使用 private 和 protected 成员修饰符来真正地实现私有化和受保护成员。

私有成员

私有成员只能在 class 内部被访问,外部代码无法访问。在 class 中使用 # 符号来表示私有成员。下面是一个使用私有成员的示例代码:

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

  ------
  -----

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

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

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

在上面的代码中,我们使用 #name 和 #age 来定义私有成员,同时在 getName 和 getAge 方法中访问这两个私有成员。外部代码无法直接访问这两个私有成员。如果外部代码使用 person.#name 的方式去访问私有成员,就会抛出一个语法错误。

受保护成员

受保护成员只能在 class 内部和其子类中被访问,外部代码也无法访问。受保护成员前面加上一个 _ 符号。下面是一个使用受保护成员的示例代码:

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

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

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

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

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

在上面的代码中,我们使用 _name 和 _age 来定义受保护成员,而在子类 Student 中可以访问这两个成员。外部代码无法直接访问这两个受保护成员。如果外部代码使用 student._name 的方式去访问受保护成员,就会抛出一个语法错误。

使用 public 和 readonly 成员修饰符

在 ES10 中,除了 private 和 protected 成员修饰符,我们还增加了 public 和 readonly 成员修饰符。

公有成员

公有成员是默认的成员类型,可以被任何代码访问。在 class 中可以直接定义公有成员,不需要使用任何关键字来修饰。下面是一个使用公有成员的示例代码:

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

  -----
  ----

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

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

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

在上面的代码中,我们使用 name 和 age 来定义公有成员,同时在 getName 和 getAge 方法中访问这两个公有成员。外部代码可以直接访问这两个公有成员。如果外部代码使用 person.name 的方式去访问公有成员,就可以获取到 name 的值。

只读成员

只读成员是指不能被重新赋值的成员。在 class 中使用 readonly 关键字来表示只读成员。下面是一个使用只读成员的示例代码:

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

  -------- ---

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

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

在上面的代码中,我们使用 readonly 关键字来定义只读成员 id。只读成员不能被重新赋值,在外部代码中使用 person.id = "123" 的方式去修改只读成员的值,就会抛出一个语法错误。

结论

通过使用 class 成员修饰符,可以更好地控制和限制 class 成员的访问范围,从而提高代码的可读性和可维护性。这些成员修饰符包括:public、private、protected 和 readonly。我们可以在定义 class 中的成员时使用这些关键字来限制其访问方式。

使用 class 成员修饰符还有一些注意事项:

  • 在使用 private 和 protected 关键字定义 class 成员时,必须先定义这些成员,才能在 constructor 中使用它们。
  • 在使用 readonly 关键字定义 class 成员时,必须在 constructor 中对它进行初始化。

总之,使用 ES10 中的 class 成员修饰符可以更好地规范化代码,使代码更易于理解和维护。

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

纠错
反馈