因此,当他们创建es6类时,他们只是将所有内容默认设置为公开,这对我来说有点奇怪,但我只是依旧使用它,因为我仍然使用旧的基于es5样式范围的类。
无论如何,几年前我们正在私人成员上课,看起来很棒,但是你看看synax:
somePublicVar = 10;
#somePrivateVar = 20;
正如你所看到的,我们现在必须在私有东西前加上哈希/英镑符号,这似乎是一个非常奇怪的选择,因为JS有public
和private
关键字保留供将来使用,所以现在我们要区分公共和私有为什么不刚刚做。
public somePublicVar = 10;
private somePrivateVar = 20;
所以我确信有一个技术原因,但我正在努力找到它,因为现在似乎是将这些public
和private
从保留变为“使用中”的最佳时机,使其更加明确和明显至于给定成员的访问修饰符。
官方FAQ回答:
为什么不宣布
private x
?这种声明是其他语言使用的(特别是Java),并暗示可以使用
this.x
进行访问。假设情况并非如此(见上文),在JavaScript中,这将无声地创建或访问公共字段,而不是抛出错误。这是一个主要的潜在漏洞来源或无形地建立公共领域,这些领域是私人的。它还允许声明和访问之间的对称,就像公共字段一样:
class A { pub = 0; #priv = 1; m() { return this.pub + this.#priv; } }