ECMAScript 2019 (ES10):私有属性的获取和设置

ECMAScript 2019(ES10)是 JavaScript 的最新版本,它提供了许多新的功能和改进,其中之一是支持私有属性的获取和设置。私有属性是一些只能在类内部访问的属性,而不能从类的外部访问的属性。 在 ES10 中,我们现在可以在类中定义私有属性并通过类实例来获取和设置属性。

私有属性是什么?

私有属性是指只能在类内部访问的属性,而不能从类的外部访问的属性。 借助私有属性,我们可以确保一些内部状态只能通过函数来管理,从而确保程序的安全性和可维护性。

以前,在 JavaScript 中模拟私有属性的方法是在属性名前加上“_”前缀,以向其他程序员表示该属性应该被视为私有属性。但这个约定不是强制性的,其他程序员仍然可以在类的外部访问这些属性。

在 ES10 中定义私有属性

在 ES10 中定义私有属性非常简单,您只需使用命名约定即可,以 # 开头的标识符将自动成为类的私有属性。 让我们看一个简单的类,并向其中添加一个私有属性:

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

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

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

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

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

在这个示例中,我们定义了一个 Person 类并在类中定义了一个私有属性 #name。 我们还定义了两个公共方法 getName() 和 setName(),这两个方法用于获取和设置私有属性 #name 的值。

请注意,在定义私有属性 #name 时,我们没有使用任何特殊的语法或关键字。 只有使用以 # 开头的标识符,所定义的变量将成为私有属性。

在类的内部,通过类实例的 this 引用可以访问 #name 私有属性,并通过 getName() 和 setName() 方法来获取和设置私有属性的值。 在类的外部,除了在调试模式下读取私有属性值,其他地方都不能直接访问。

建议

  1. 在使用私有属性时,请务必确保所有私有属性的名称都是以 # 开头的。 否则,您可能无法使用语言未来的版本中的功能。
  2. 私有属性是可变的,并且可以在类中的任何方法中进行修改。 请注意,这可能会导致不同的方法之间依赖性的增加,从而增加代码维护的困难度。 在编写使用私有属性的代码时,请始终考虑类的整体设计和架构。
  3. 如果您需要从类外部访问私有属性的值,最好将值公开为一个公共方法。 这可以确保只有在访问私有属性时,执行特定的逻辑。

结论

在 ES10 中,我们可以使用 # 标识符定义私有属性,从而确保类的内部状态的安全性和可维护性。 与在方法中使用闭包相比,私有属性的实现更加优雅且易于使用。 通过使用私有属性,我们可以将状态从类的使用者中隐藏,并将重点放在类的对象的行为上。

参考

  1. MDN: Classes -- Private instance members
  2. ExploringJS: Private Properties and Methods in JavaScript Classes

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