【发布时间】:2014-09-11 17:26:45
【问题描述】:
模块模式被大多数人描述为:
var module = (function() {
// private fields
var a, b, c;
// private functions
function myFunction() {}
// public data (where you expose to outside)
return {
publicFunc: function() {}
};
})();
但是上面的代码创建了模块的一个实例。真的必须是单例吗?
下面的代码还是模块模式吗?
function module() {
// same code
return {
publicFunc: function() {}
};
}
【问题讨论】:
-
是的,一个模块应该是一个单例,创建一个模块的多个实例并没有什么意义,因为它实际上只是一个“帮助”函数,其中包含可以调用的方法等。重点只是创建一个具有私有作用域的闭包,这样模块就不会干扰其他代码。第二个例子不是模块,它只是一个返回对象的函数。
-
不,但它确实有资格将其用作具有公共和私有变量的“类”。
标签: javascript design-patterns