我正在尝试将我的代码从 ES5 模块迁移到 ES6 类。我当前的代码(模块,而不是类)如下所示:
var appleModule = (function() {
var yummy = true;
var publicEat = function() { }
var privateEat = function() { }
return { "eat": publicEat }
})();
上面的内容允许我创建私有(private)变量和方法,这些变量和方法不会暴露给环境中的其他 Javascript 对象/作用域。我喜欢。我想在 ES6 中我们现在有了类,所以像这样的东西变成了重构代码:
exports class appleModule {
constructor {
this.yummy = true;
}
publicEat() {
}
privateEat() {
// How to make private?
}
}
但是,没有一种好的方法可以使用这种基于类的新语法来创建私有(private)变量和函数。新的建议是将 exports
与以前的模块模式(公共(public)成员的闭包返回对象)一起使用吗?如果没有,我如何像第一个示例那样模拟私有(private)范围(希望没有下划线)?
最佳答案
I figure in ES6 we have classes now so something like this becomes the refactored code.
您的原始代码似乎代表了一个模块之类的东西。类不是模块,但 ES6 现在对模块有原生支持。所以你的代码应该更有可能变成
var yummy = true;
var publicEat = function() { }
var privateEat = function() { }
export {publicEat as eat};
并不是所有的东西都可以、已经或应该被建模为一个类。
关于javascript - 如何用 ES6 类模拟私有(private)作用域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33324287/