Javascript ES6类私有成员语法
我有一个简短的问题。在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; }; } }
上课的时候没什么不同。构造函数的主体只是成为
构造函数的主体
:
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;
};
}
}