js模块化小结
復(fù)述一遍阮一峰的blog,加深印象
博客地址 ?http://www.ruanyifeng.com/blog/2012/10/javascript_module.html
?
? 1.函數(shù) function m1(){} ?這樣函數(shù)里的新函數(shù)或者var的對(duì)象就不會(huì)污染全局;
? 2.對(duì)象寫法
代碼優(yōu)點(diǎn):
1)多個(gè)有關(guān)聯(lián)的變量或者函數(shù)不污染全局,可以這樣在前面加一個(gè)module1的名字
2)可以保證 new object里的key之間有一些邏輯上的聯(lián)系
var module1 = new Object({_count : 0,m1 : function (){alert(_count); //報(bào)錯(cuò) },m2 : function (){//... }});調(diào)用時(shí) ? module1.m1();? ?
注意:key他們都是平行的。平行的意思是?看以下說明
? ? 如果在全局變量中寫以下代碼
var count = 0;function m1(){alert(count); //0 }function m2(){m1();
}
? ?m1里是可以獲取count的,m2里也可以調(diào)用m1。但是在module1里,各個(gè)函數(shù)和變量不可以相互引用,引用的話就如第一段代碼中的alert那里會(huì)報(bào)錯(cuò)。
? ?所以平行的意思就是,module1里的_count,m1,m2都是一樣大的官,誰都不能調(diào)用誰支使誰。
? ?代碼缺點(diǎn):外部可以修改module1內(nèi)部?jī)?nèi)容 , 如 module1._count = 1;
??
3.模塊函數(shù)寫法
var module1 = function(){var _count = 0;var m1 = function(){alert(_count);};var m2 = function(){//... };return {m1 : m1,m2 : m2};}$('#button').click( function(){module1().m1(); //0});?
優(yōu)點(diǎn):1)可以私有函數(shù)或變量 ,如_count,function private
2)外部無法改變
? ? 下面驗(yàn)證了代碼無法改變,click的時(shí)候根本就無法進(jìn)入修改m1的代碼
$('#button').click( function(){module1().m1 = function(){ //未進(jìn)入alert(2);}module1().m1();});? 立即執(zhí)行函數(shù)寫法
var module1 = (function(){var _count = 0;var m1 = function(){//... };var m2 = function(){//... };return {m1 : m1,m2 : m2};})();這樣可以直接執(zhí)行module1 就不用像上面那個(gè)代碼再module1()才能生效模塊里面的內(nèi)容了
?
轉(zhuǎn)載于:https://www.cnblogs.com/cjy1993/p/3897236.html
總結(jié)
- 上一篇: RPM包实现LAMP
- 下一篇: 不root的情况下 查看App的数据表