Module pattern用于模仿类的概念(因为JavaScript本身不支持类),因此我们可以将公共和私有方法和变量存储在单个对象中。
由于javascript拥有自己的原生类,这仍然是必需的吗?
答案 0 :(得分:2)
模块模式不仅 (或甚至主要用于)模仿类。它是proper modules,而不是类,使旧模块模式可能成为......如果不是过时,那么很多使用不足,在下一个数年。那些和private methods(目前是第3阶段提案),也许是private fields(也是第3阶段)。
但在适当的模块之前,或者有时甚至与它们并发,如果你想要私有的功能或数据或与非私有的相似的东西,你仍然会使用它。例如:
const Foo = (function() {
function privateFunction(x) {
return /*...do something with `x`...*/;
}
class Foo {
dosomething(x) {
return privateFunction(x) ? "a" : "b";
}
}
return Foo;
})();
我还会注意到,有时候,您可能会使用匿名阻止而不是IIFE,因为class
,const
和let
具有阻止范围。我不会在上面,因为我必须使外Foo
非常数(所以我可以在块中分配它),但还有其他时候它可能适用...