这是我发现自己使用和调整多年的js模式。有没有人认识到这种JavaScript设计模式?
事情是,我经历了一些实验后陷入了它,我很想知道这种类型的模式是否有名称。我浏览了很多设计模式,但没有发现类似的东西(或者很简单,特别是对于模块化类型模式)。
var FOO = (function ($) {
var privateFuncA = function() {
...
},
privateFuncB = function() {
...
},
self = {
init: function() {
privateFuncA(); // Call a private func
self.publicFunc(); // Call a public func
},
publicFunc: function() {
...
}
};
return self;
}(jQuery));
$(function() {
// Initialise FOO
FOO.init();
});
想法是保留所有命名空间,并允许伪公共/私人funcs。
如果我需要去模块化I将扩展底座Foo对象:如果你想从外面就可以调用publicFunc在扩展对象
// Extend FOO object
FOO.Bar = (function ($) {
var privateFunc = function() {
...
},
self = {
publicFunc: function() {
...
}
};
return self;
}(jQuery));
:
FOO.Bar.publicFunc()
有谁知道这种类型的模式是否有名称,或者这种设计是否存在任何已知问题?
我可能很厚,但与标准[模块模式]有什么区别(http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth)(这里与标准命名空间模式)? –
不,你不是很厚:]我刚刚没有遇到那篇文章 - 感谢分享,有用的阅读。 – benpink