是否可以在ES6类中创建私有属性?
这是一个例子.我怎样才能阻止访问instance.property?
class Something {
constructor(){
this.property = "test";
}
}
var instance = new Something();
console.log(instance.property); //=> "test"
Run Code Online (Sandbox Code Playgroud) 这一直困扰着我一段时间.当我看到任何以文本打印的Ruby方法时,它通常显示为:
Class#method
Run Code Online (Sandbox Code Playgroud)
要么
#method
Run Code Online (Sandbox Code Playgroud)
现在,我会用:
Class.method
Run Code Online (Sandbox Code Playgroud)
为什么所有Ruby方法都以井号开头?有什么理由吗?只是好奇.
因此,当他们创建 es6 类时,他们只是默认将所有内容设为公开,这对我来说有点奇怪,但我还是照做了,因为我仍然使用旧的 es5 样式基于作用域的类。
无论如何,几年过去了,我们在班级中加入了私人成员,这看起来很棒,但是你看一下 Synax:
somePublicVar = 10;
#somePrivateVar = 20;
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我们现在必须用哈希/磅符号作为私有内容的前缀,考虑到 JS 有public和private保留供将来使用的关键字,这似乎是一个非常奇怪的选择,所以现在我们想区分 public 和 private 为什么不是现在做。
public somePublicVar = 10;
private somePrivateVar = 20;
Run Code Online (Sandbox Code Playgroud)
所以,我相信有为什么,但我在努力找到一个技术原因,因为它现在似乎是把那些最完美的时间public,并private从保留“使用”,使得它多一点明确,明显为给定成员的访问修饰符。