這是我發現自己使用和調整多年的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