【发布时间】:2016-01-24 06:51:12
【问题描述】:
我正在尝试将我的代码从 ES5 模块迁移到 ES6 类。我当前的代码(模块,而不是类)如下所示:
var appleModule = (function() {
var yummy = true;
var publicEat = function() { }
var privateEat = function() { }
return { "eat": publicEat }
})();
以上内容允许我创建私有变量和方法,这些变量和方法不会暴露给我的环境中的其他 Javascript 对象/范围。我喜欢。我认为在 ES6 中我们现在有了类,所以像这样的东西变成了重构代码:
exports class appleModule {
constructor {
this.yummy = true;
}
publicEat() {
}
privateEat() {
// How to make private?
}
}
但是,使用这种基于类的新语法创建私有变量和函数并不是一个好方法。新建议是否将exports 与以前的模块模式(公共成员的闭包返回对象)一起使用?如果不是,我如何像第一个示例那样模拟私有作用域(希望没有下划线)?
【问题讨论】:
标签: javascript class module scope ecmascript-6