现在javascript具有本地'类"模块模式仍然是必要的。

时间:2017-12-08 13:11:57

标签: javascript class design-patterns

Module pattern用于模仿类的概念(因为JavaScript本身不支持类),因此我们可以将公共和私有方法和变量存储在单个对象中。

由于javascript拥有自己的原生类,这仍然是必需的吗?

1 个答案:

答案 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,因为classconstlet具有阻止范围。我不会在上面,因为我必须使外Foo非常数(所以我可以在块中分配它),但还有其他时候它可能适用...