一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

javascript 命名空間以提高代碼重用性

當(dāng)在同一個(gè)網(wǎng)頁里引入10多個(gè)js文件之后,
各js中的同名函數(shù)就很容易沖突了。
比如xxx庫里寫了個(gè)addCssStyle方法,
yyy類庫里也寫了個(gè)addCssStyle方法,
而這兩個(gè)方法的具體實(shí)現(xiàn)又有一定差別。
那么同時(shí)引用這兩個(gè)組件的時(shí)候,函數(shù)沖突之后導(dǎo)致頁面效果發(fā)生變化,
調(diào)試和修改都是非常痛苦的,如果為了避免沖突,
而放棄引用一些優(yōu)秀的組件,那更是讓人郁悶的事情。

為此,在封裝Javascript組件庫的時(shí)候,請使用命名空間來避免沖突。
將所有的方法和變量都要按包名類名的方式來寫。
(這個(gè)時(shí)候?qū)懘a的感覺和封裝Java的util方法一樣方便,呵呵)
由此,我的js庫按如下方式封裝。
google了半天,都沒現(xiàn)成的,于是自己摸索出來,示例代碼如下:
(lizongbo原創(chuàng)!!!)

<script language="JavaScript" type="text/Javascript" >
<!-- //初始化命名空間
var jscom = jscom ? jscom : {};
jscom.lizongbo = jscom.lizongbo ? jscom.lizongbo : {};
//第一種封裝方法
jscom.lizongbo.util = jscom.lizongbo.util ? jscom.lizongbo.util : {
crtVersion : 'jscom.lizongbo.util version 0.0.1', //注意用逗號隔開
sayHello: function (str){
window.alert('hello : '+str +' by ' + this.getVersion()); //變量引用要加上this
},//注意用逗號隔開
getVersion :function (){
//alert(' jscom.lizongbo.util version ' + this.crtVersion);//變量引用要加上this
return this.crtVersion+' lizongbo';
}//注意不能夠有逗號
}
//第二種封裝方法
jscom.lizongbo.util2 =function (){};//重點(diǎn)是這行,它保證了下面的with調(diào)用
jscom.lizongbo.util2.crtVersion=' jscom.lizongbo.util2 version 0.0.2';
jscom.lizongbo.util2.sayHello = function(str){
with (jscom.lizongbo.util2) {//這里也是重點(diǎn),不然會找不到getVersion方法。
window.alert('你好 : '+str +' by ' + getVersion());//這種方法不用加this
}
};
jscom.lizongbo.util2.getVersion = function(){
with (jscom.lizongbo.util2) {//這里也是重點(diǎn),不然會找不到crtVersion變量。
return crtVersion+' lizongbo2';
}
};
var vutil1= jscom.lizongbo.util; //和Java的import差不多好用
vutil1.sayHello('lizongbo'); //第一種調(diào)用
var vutil2= jscom.lizongbo.util2;
vutil2.sayHello('lizongbo');//第二種調(diào)用
//-->
</script>

把上面的代碼復(fù)制網(wǎng)頁里看看效果吧。
對比兩種實(shí)現(xiàn)方式,現(xiàn)有代碼按第二種方式改造最為方便。
再把js文件按命名空間命名,那樣操作就更加方便了。
例如
<script type="text/Javascript" src="/commons/scripts/jscom.lizongbo.util1.js"></script>
<script type="text/Javascript" src="/commons/scripts/jscom.lizongbo.util2.js"></script>
只要都按此方式編寫的庫,再也不用擔(dān)心引入多個(gè)js文件之后的函數(shù)沖突問題了。

JavaScript技術(shù)javascript 命名空間以提高代碼重用性,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 丁香婷婷久久大综合 | 影院成人区精品一区二区婷婷丽春院影视 | 91最新| 午夜免费大片 | 日韩精品亚洲专区在线影视 | 国产专区视频 | 久久夜色精品国产亚洲噜噜 | www.婷婷色| 亚洲伊人久久大香线蕉结合 | 2020国产精品永久在线观看 | 色噜噜狠狠先锋影音久久 | 久久伊人久久亚洲综合 | 成人精品亚洲人成在线 | 亚洲国产精品成人午夜在线观看 | 国产精品日韩欧美一区二区三区 | 色五月视频 | 91嫩草国产在线观看免费 | 91视频专区| 思思九九热 | 美女一丝不佳一级毛片大屁股 | 91麻豆精品国产片在线观看 | 亚洲人成人 | 一级美女 | 亚洲一区二区成人 | 欧美大吊视频 | 91福利影院| 伊人成人在线视频 | 欧美 亚洲 综合 卡通 另类 区 | 久久99精品久久久久久青青91 | 国内精品久久影视免费 | 97青草最新免费精品视频 | 经典欧美gifxxoo动态图午夜 | 天天躁日日躁狠狠躁中文字幕老牛 | 古代一级毛片 | 黄网在线免费观看 | 成人性色大片 | 一区视频| 久久免费99精品国产自在现线 | 区二区三区四区免费视频 | 亚洲综合色一区二区三区另类 | 能在线观看的一区二区三区 |