參考阮一峰老師的文字 http://www.ruanyifeng.com/blog/2012/10/javascript_module.html
1,采用對象的方式進行模塊封裝,由于有了命名空間,所以不會污染到其他空間。
var module = {
n : 0,
m1 : function (){
//...
},
m2 : function (){
//...
}
};
module.m1();//調用該模塊的方法
但是module.n = 100;//這樣就修改了模塊內部的變量值。所以不太好。
2,采用立刻執行的函數的寫法(閉包)
var module = (function(){
var n = 0;
var m1 = function(){
//...
};
var m2 = function(){
//...
};
return {
m1 : m1,
m2 : m2
};
})();
這樣就沒法改變n的值了。
3,對已有模塊進行添加方法之類的,或者在已有模塊的基礎上進行添加和改造(繼承自原對象),返回一個新對象。
var module1 = (function (mod){ //或var module2 = ....
mod.m3 = function () {
//...
};
return mod;
})(module1);
上面的代碼將module1模塊傳入以后,進行加工,添加了一個新方法m3(),然后返回新的module1模塊。
如果擔心引入的module可能是不存在的,可以
var module1 = (function(mod){
//...
})(window.module1 || {}); //參數可以為空對象
4,保證模塊獨立性,為了在模塊內部調用全局變量,顯式地將其他變量輸入模塊。
var module1 = (function ($, YAHOO) {
//...
})(jQuery, YAHOO);