【发布时间】:2018-07-13 23:05:28
【问题描述】:
我已经习惯了以下被广泛使用的语法:
var foo = foo || {};
(function() {
foo.bar = function(){
return this;
};
foo.bar.prototype.stuff = null;
foo.bar.prototype.do = function(){...};
})();
它可以在有或没有关闭的情况下完成。
我使用 foo.bar.prototype.stuff 语法,以便在构造函数本身中没有所有定义。
在 ECS6 中,我尝试了以下语法:
class Foo{};
class Bar{
constructor(){
this.stuff = null;
}
get moreStuff(){ return this.stuff++;}
do(){...}
}
Foo.Bar = Bar;
module.exports = { Foo };
我发现使用这种语法时,intellisense 在 Visual Studio Code 中工作非常方便。
任何人都可以看到这种语法有任何问题吗?如果有,可以提出一个更好的建议吗?
我阅读了这篇 How do I declare a namespace in JavaScript? 的帖子,发现了许多建议的语法,但大多数是在 ECS6 之前给出的。
【问题讨论】:
-
我通常会说,为什么要将
Bar分配给Foo?您可以将两者都放入exports并从那里访问它们。 -
@loganfsmyth 我有 C# 背景,所以我习惯于在分层命名空间中构建我的代码,我相信这在 JavaScript 中也很常见。如果有更好的方法,我会用它。
-
通常对于模块化 JS,文件本身充当命名空间,所以你会这样做
module.exports = Bar;就是这样。如果你需要这个类,你可以使用文件路径require()它。
标签: javascript ecmascript-6 namespaces