我有一堆跟在 "JavaScript Module Pattern" as described in this popular article 后面的“模块”。 .据我了解,这些模块是将各种行为聚合到整洁的命名空间中的一种方式。
但是,如果我希望能够创建一个接受参数的唯一对象实例呢?就目前而言,我不能这样做,因为所有数据都是共享/静态的。我希望能够做到这一点:
var foo = new Some.Namespace.Whatever.Foo(config);
我无法更改模式的结构,因为我们已经使用了一段时间,而且效果很好。我只想对其进行调整,以便可以将一些“类”放入其中,以处理非静态数据。
最佳答案
为什么不试试这个?
var MODULE = (function () {
var my = {};
my.SomeClass = SomeClass;
function SomeClass(six) {
this.six = six;
}
SomeClass.prototype.five = 5;
return my;
})();
当您调用
var obj = new MODULE.SomeClass(6)
它会给你一个新的对象。 obj.five
在 SomeClass
的所有实例之间共享因为它附在原型(prototype)上。但是,obj.six
特定于该实例,因为它附加到 obj
.或者,您可能不需要将您的类放在模块中。您可以在适当的情况下使用类来替换模 block ,因为在这种情况下,模块和类都有一些重叠的功能。
关于module-pattern - 我可以使用带有 javascript 模块模式的类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15252441/