在 ECMAScript 2020 中使用类的 getters 和 setters

阅读时长 6 分钟读完

在新的 ECMAScript 2020 中,类的 getters 和 setters 功能得到了增强。使用这些功能,你可以更加灵活地控制类的属性,并且可以更加方便地进行数据绑定和数据校验。

getters 和 setters 的基本用法

在 ECMAScript 2020 中,你可以通过 getset 关键字来定义一个类的 getter 和 setter 方法。例如:

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

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

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

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

在上面的代码中,我们定义了一个 Person 类,并且在类中定义了一个 name 属性的 getter 和 setter 方法。当我们访问 p.name 属性时,实际上是调用了 name 的 getter 方法,当我们给 p.name 赋值时,实际上是调用了 name 的 setter 方法。

getter 和 setter 的高级用法

除了基本用法之外,getter 和 setter 还有一些高级用法,可以让我们更加灵活地控制类的属性。

计算属性

getter 和 setter 可以用来实现计算属性。计算属性是指一个属性的值是根据其他属性计算得到的。例如:

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

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

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

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

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

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

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

在上面的代码中,我们定义了一个 Circle 类,并且在类中定义了 radiusdiameterarea 三个属性的 getter 和 setter 方法。其中,diameterarea 属性是计算属性,它们的值是根据 radius 属性计算得到的。

数据绑定

getter 和 setter 还可以用来实现数据绑定。数据绑定是指当一个属性的值发生变化时,另一个属性的值也会随之发生变化。例如:

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

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

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

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

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

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

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

在上面的代码中,我们定义了一个 Person 类,并且在类中定义了 firstNamelastNamefullName 三个属性的 getter 和 setter 方法。其中,fullName 属性是根据 firstNamelastName 属性计算得到的。当我们修改 firstNamelastName 属性时,fullName 属性也会随之发生变化。

数据校验

getter 和 setter 还可以用来实现数据校验。数据校验是指在给一个属性赋值之前,先对这个值进行校验,只有符合要求的值才会被赋值。例如:

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

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

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

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

在上面的代码中,我们定义了一个 Person 类,并且在类中定义了 name 属性的 getter 和 setter 方法。当我们给 name 属性赋值时,如果这个值的长度小于 2,就会抛出一个异常。

总结

在 ECMAScript 2020 中,使用类的 getters 和 setters 功能可以让我们更加灵活地控制类的属性,并且可以更加方便地进行数据绑定和数据校验。在实际开发中,我们可以根据需要使用这些功能来提高代码的可读性和可维护性。

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

纠错
反馈