为什么js类不使用public和private关键字?

时间:2019-03-28 10:04:27

标签: javascript oop es6-class

因此,当他们创建es6类时,默认情况下它们只是将所有内容公开,这对我来说有点奇怪,但是鉴于我仍然使用较旧的基于es5样式范围的类,我就选择了它。

无论如何,几年后,我们都在班级中获得了私人成员,这似乎很棒,但是接下来您要看看synax:

somePublicVar = 10;
#somePrivateVar = 20;

正如您所看到的,我们现在必须在私有内容前加上井号/井号,这是一个非常奇怪的选择,因为JS具有publicprivate关键字供将来使用,因此现在我们要区分公共和私人,为什么现在不这样做。

public somePublicVar = 10;
private somePrivateVar = 20;

因此,我敢肯定有一个技术原因,但我仍在努力寻找它,因为现在看来是将publicprivate从保留更改为“使用”,从而使给定成员的访问修饰符更加明确和明显。

1 个答案:

答案 0 :(得分:3)

FAQ官方回答:

  

为什么不是声明private x

     

这种声明是其他语言(特别是Java)使用的声明,   并暗示将使用this.x进行访问。假如说   并非如此(请参见上文),这会在JavaScript中默默创建   或访问公共字段,而不是抛出错误。这是一个   错误的主要潜在来源或无形的公共领域   本来打算是私人的。

     

它也允许声明和访问之间的对称,就像   有公共场所:

class A {
  pub = 0;
  #priv = 1;
  m() {
    return this.pub + this.#priv;
  }
}
     

https://github.com/tc39/proposal-class-fields/blob/master/PRIVATE_SYNTAX_FAQ.md#why-arent-declarations-private-x