Javascript ES6类私有成员语法

Javascript ES6类私有成员语法,javascript,class,private,ecmascript-6,Javascript,Class,Private,Ecmascript 6,我有一个简短的问题。在ES6类中声明私有成员的最干净、最直接的方法是什么 换言之,如何实施 作为 上课的时候没什么不同。构造函数的主体只是成为构造函数的主体: class MyClass { constructor() { var privateFunction = function () { return 0; }; this.publicFunction = function () { return 1; }; } }

我有一个简短的问题。在ES6类中声明私有成员的最干净、最直接的方法是什么

换言之,如何实施

作为


上课的时候没什么不同。构造函数的主体只是成为
构造函数的主体

class MyClass {
  constructor() {
    var privateFunction = function () {
      return 0;
    };

    this.publicFunction = function () {
      return 1;
    };
  }
}
当然,如果不需要访问
privateFunction
,那么
publicFunction
也可以像您的示例中那样是一个真正的方法


我并不特别建议这样做(出于各种原因,我反对伪privat属性),但这将是对代码最直接的翻译。

对于类来说没有太大不同。构造函数的主体只是成为
构造函数的主体

class MyClass {
  constructor() {
    var privateFunction = function () {
      return 0;
    };

    this.publicFunction = function () {
      return 1;
    };
  }
}
当然,如果不需要访问
privateFunction
,那么
publicFunction
也可以像您的示例中那样是一个真正的方法


我并不特别建议这样做(出于各种原因,我反对伪privat属性),但这将是您代码最直接的翻译。

谢谢,Dan,这基本上回答了我的问题谢谢,Dan,这基本上回答了我的问题理论上,真正的隐私将在ES7中。可能通过语法实现真正的隐私。,但是你已经可以通过WeakMaps获得真正的隐私。这样,你在
MyClass
成员的每个实例中定义一个
publicFunction
,而不是在
MyClass上定义一次。prototype
@Masious:是的,如果
publicFunction
需要访问
privateFunction
,这是必要的。这就是为什么我说如果它不需要访问
privateFunction
它可能是一个“真正的方法”。但我可以更清楚地表达出来。理论上,真正的隐私将出现在ES7中。可能通过语法实现真正的隐私,但你已经可以通过WeakMaps获得真正的隐私。这样,你在
MyClass
成员的每个实例中定义了
publicFunction
,而不是在
MyClass上定义一次。prototype
@Masious:是的,如果
publicFunction
需要访问
privateFunction
,则这是必需的。这就是为什么我说如果它不需要访问
privateFunction
它可能是一个“真正的方法”。但我本可以表达得更清楚。
class MyClass {
  constructor() {
    var privateFunction = function () {
      return 0;
    };

    this.publicFunction = function () {
      return 1;
    };
  }
}