作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
模块模式被大多数人描述为:
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() {}
};
}
最佳答案
是的,模块模式返回一个单例,但这并不是一个实际的限制。您可以使用模块模式返回单例工厂函数,然后多次调用该工厂函数。
var point = (function() {
// Add private code here to make use of module pattern.
// If you don't have anything to keep private, then
// module pattern is overkill, as noted in the comments
return function(x,y) {
return {
x : x,
y: y
}
}
})();
var point1 = point(0,0);
var point2 = point(3,4);
在不使用工厂函数的情况下,您还可以将模块模式放入一个循环中并多次执行(不推荐这样做,因为它非常低效):
var points = [];
for (var i=0; i<4; i++){
points[i] = (function module() {
// same code
return {
publicFunc: function() {}
};
})();
}
更新:根据下面@North 和@Bergi 的反馈,在第一个示例中添加了评论
关于javascript - 模块模式真的必须是单例模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24861176/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!