如何在JavaScript6类中使属性私有?二传手和接球手的目的?

如何在JavaScript6类中使属性私有?二传手和接球手的目的?,javascript,class,ecmascript-6,private,getter-setter,Javascript,Class,Ecmascript 6,Private,Getter Setter,请看以下代码: class Animal() { constructor(type, name) { this._type = type; this._name = name; } get type() { return this._type; } get name() { return this._name; } } 如果我要跑: var Dog = new Animal("Dog", "Rover"); console.log(

请看以下代码:

class Animal() {
  constructor(type, name) {
    this._type = type;
    this._name = name;
  }

  get type() {
    return this._type;
  }

  get name() {
    return this._name;
  }
}
如果我要跑:

var Dog = new Animal("Dog", "Rover"); 
console.log(Dog._name);

控制台将返回我的狗的名字,而不需要使用我上面写的`get name(){}。如果可以直接访问对象属性,Javascript 6中的getter和setter有什么意义?为什么在私有财产私有化毫无作用的情况下,下划线却成了私有财产的惯例?如何使用当前的ecmascript-6标准使我的属性在Javascript类中成为私有属性?

getter/setter的要点是:如果内部表示形式发生更改,则无需修改类接口。例如,如果您决定从现在开始从其他属性计算
类型
,您可以这样做。setter通常需要进行一些计算,例如,在接受该值之前验证该值是否有效。有关私有财产及其利弊的完整讨论,请参阅。请仅在每篇文章中提出一个问题。我希望复制件能回答所有问题,如果不能,请提出更具体的问题。