使用 ES10 解决 JavaScript 类的私有性问题
在 JavaScript 中,类是一种对象,可以用来创建特定类型的对象。ES6 引入了类的概念,并且使用了关键字 class
。然而,在类中声明的属性和方法都是公共的,也就是说它们可以在外部访问和调用。这就带来了一个问题:如何实现类的私有性?
ES10(也称为 ES2019)为解决这个问题引入了以下特性:
- 标准化语法定义私有字段
ES10 引入了“私有字段”语法来解决 JavaScript 类的私有性问题。私有字段只能在该类的构造函数内和类的方法内部访问,而不能在类外部访问。私有字段可以通过在名称前加上井号 #
来定义。例如,我们可以定义一个名为 Person
的类,其中包含了一个私有字段 #name
:
----- ------ - ------ ----------------- - ---------- - ----- - --------- - ------ ----------- - - ----- ------ - --- --------------- ------------------------------ -- ---- -------------------------- -- -------- ------------ ------- ----- ------- ---- -- -------- -- -- --------- -----
通过这个示例,我们可以看到私有字段 #name
只能在类的内部访问,而不能在类外部访问。
- 使用 getter 和 setter 方法
如果您不想使用私有字段(可能是因为私有字段还不是所有浏览器都支持),则可以使用 getter 和 setter 方法来实现类的私有性。getter 用于获取私有属性的值,setter 用于设置私有属性的值。
----- ------ - ----------------- - ---------- - ----- - --- ------ - ------ ----------- - --- ----------- - -- ------------- - -- - ----------------- -- --- --------- ------- - ---------- - ------ - - ----- ------ - --- --------------- ------------------------- -- ---- ----------- - ---- ------------------------- -- ---- ----------- - ------- ------------------------- -- ----
在上面的示例中,我们使用了一个名为 name
的 getter 和 setter 方法,它们分别用于获取和设置私有属性 _name
的值。setter 方法验证了传递给它的新值是否符合条件(长度是否小于 4)。
总结
在 ES10 中,实现类的私有性有两种方式:使用新的“私有字段”语法或使用 getter 和 setter 方法。这些特性为您提供了更好的控制权限的方式,以确保您的类中的属性和方法只能被访问和调用所需的代码。
示例代码
----- ------ - ------ ----------------- - ---------- - ----- - --------- - ------ ----------- - - ----- ------ - --- --------------- ------------------------------ -- ---- ----- ------- - ----------------- - ---------- - ----- - --- ------ - ------ ----------- - --- ----------- - -- ------------- - -- - ----------------- -- --- --------- ------- - ---------- - ------ - - ----- ------- - --- ---------------- -------------------------- -- ---- ------------ - ---- -------------------------- -- ---- ------------ - ------- -------------------------- -- ----
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/648af96148841e98949567d8