Rya*_*hel 3 javascript scope module class ecmascript-6
我正在尝试将我的代码从ES5模块迁移到ES6类.我当前的代码(模块,而不是类),如下所示:
var appleModule = (function() {
var yummy = true;
var publicEat = function() { }
var privateEat = function() { }
return { "eat": publicEat }
})();
Run Code Online (Sandbox Code Playgroud)
上面允许我创建私有变量和方法,我不会向我的环境中的其他Javascript对象/作用域公开.我喜欢.我想在ES6中我们现在有类,所以像这样的东西变成了重构的代码:
exports class appleModule {
constructor {
this.yummy = true;
}
publicEat() {
}
privateEat() {
// How to make private?
}
}
Run Code Online (Sandbox Code Playgroud)
但是,使用这种新的基于类的语法创建私有变量和函数并不是一种好方法.新建议是否exports与先前的模块模式一起使用(关闭公共成员的返回对象)?如果没有,我怎么能像第一个例子那样模拟私有范围(希望没有下划线)?
我想在ES6中我们现在有类,所以像这样的东西变成了重构的代码.
您的原始代码似乎表示类似于模块.类不是模块,但ES6现在具有对模块的本机支持.所以你的代码应该更有可能成为
var yummy = true;
var publicEat = function() { }
var privateEat = function() { }
export {publicEat as eat};
Run Code Online (Sandbox Code Playgroud)
并非一切都可以,已经或应该被建模为一个类.