ES12 中的双边私有名称

在 ES12 中,新增了一种用于定义类私有字段的方式,即双边私有名称。通过双井号 ## 定义,双边私有名称可以在类的方法中访问,但是在类外部无法访问。

定义双边私有名称

定义双边私有名称需要在类的内部,在字段名的前面添加双井号:

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

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

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

在上述示例中,定义了一个名为 Person 的类,其中包括一个双边私有名称 ##name。该字段仅能在类的内部被访问。

访问双边私有名称

访问双边私有名称需要在类的方法中使用,不能直接在类的外部访问。接下来看一个示例:

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

可以看到,我们在类的方法中通过 this.##name 的方式来访问字段,并且可以对其进行修改。但是在类的外部,我们尝试访问 person.##name 时会报错,因为它是双边私有名称,不能直接访问。

双边私有名称的指导意义

使用双边私有名称可以更好的封装类的实现细节,避免意外的修改。比如,对于一个类的内部实现中的某个字段,在以前的实现中可能会定义为类的公共属性,可以直接被外部访问和修改。如果我们使用双边私有名称,就可以隐藏该字段的实现细节,确保其在类外部不被访问和修改。

除此之外,双边私有名称还可以被继承,子类可以使用 super 关键字来访问父类中的双边私有名称。

总之,在实现类的时候,使用双边私有名称可以更好的封装实现细节,避免外部的干扰和不必要的修改。

结论

ES12 中的双边私有名称是一种用于定义类私有字段的方式,在类的内部定义,在类的方法中可以访问,但是在类外部不能访问。通过使用双边私有名称,可以更好的封装类的实现细节,确保程序的安全性和稳定性。

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