这是我发现自己多年来使用和调整的一种 js 模式。
问题是,经过一些实验,我陷入其中,我很想知道这种模式是否有名字。我浏览了很多设计模式,但没有发现任何类似的东西(或者很简单,特别是对于模块化类型模式)。
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();
});
想法是将所有内容都保留在名称空间中,并允许伪公共/私有功能。
如果我需要模块化,我将扩展基本 FOO 对象:
// Extend FOO object
FOO.Bar = (function ($) {
var privateFunc = function() {
...
},
self = {
publicFunc: function() {
...
}
};
return self;
}(jQuery));
如果您想从外部调用扩展对象中的 publicFunc,您可以:
FOO.Bar.publicFunc()
有谁知道这种类型的模式是否有名称,或者这种设计是否存在任何已知问题?