为什么js类不使用公钥和私钥?

问题描述 投票:-1回答:1

因此,当他们创建es6类时,他们只是将所有内容默认设置为公开,这对我来说有点奇怪,但我只是依旧使用它,因为我仍然使用旧的基于es5样式范围的类。

无论如何,几年前我们正在私人成员上课,看起来很棒,但是你看看synax:

somePublicVar = 10;
#somePrivateVar = 20;

正如你所看到的,我们现在必须在私有东西前加上哈希/英镑符号,这似乎是一个非常奇怪的选择,因为JS有publicprivate关键字保留供将来使用,所以现在我们要区分公共和私有为什么不刚刚做。

public somePublicVar = 10;
private somePrivateVar = 20;

所以我确信有一个技术原因,但我正在努力找到它,因为现在似乎是将这些publicprivate从保留变为“使用中”的最佳时机,使其更加明确和明显至于给定成员的访问修饰符。

javascript oop es6-class
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.