Javascript 命名空間模式
更新時間:2013年11月01日 11:03:18 作者:
命名空間是通過為項目或庫創(chuàng)建一個全局對象,然后將所有功能添加到該全局變量中。通過減少程序中全局變量的數(shù)量,實現(xiàn)單全局變量,從而在具有大量函數(shù)、對象和其他變量的情況下不會造成全局污染,同時也避免了命名沖突等問題
然而,在不同的文件中給一個命名空間添加屬性的時候,首先要保證這個命名空間是已經(jīng)存在的,同時不對已有的命名空間造成任何破壞??梢酝ㄟ^非破壞性的命名空間函數(shù)實現(xiàn):
復(fù)制代碼 代碼如下:
var KUI = KUI || {};
KUI.utils = KUI.utils || {};
KUI.utils.namespace = function(ns){
var parts = ns.split("."),
object = KUI,
i, len;
if(parts[0] === "KUI"){
parts = parts.slice(1);
}
for(i = 0, len = parts.length; i < len; i+=1){
if(!object[parts[i]]){
object[parts[i]] = {};
}
object = object[parts[i]];
}
return object;
};
用法:
復(fù)制代碼 代碼如下:
KUI.utils.namespace("KUI.common");
KUI.utils.namespace("KUI.common.testing");
KUI.utils.namespace("KUI.modules.function.plugins");
KUI.utils.namespace("format");
看一下經(jīng)過上述后KUI都有什么:
復(fù)制代碼 代碼如下:
{
"utils": {},
"common": {
"testing": {}
},
"modules": {
"function": {
"plugins": {}
}
},
"format": {}
}
命名空間模式的缺點
1.需要輸入更長的字符,并且需要更長的解析時間;
2.對單全局變量的依賴性,即任何代碼都可以修改該全局實例,其他代碼將獲得修改后的實例。
相關(guān)文章
JS中實現(xiàn)簡單Formatter函數(shù)示例代碼
JS沒有提供方便使用的Formatter函數(shù),用字符拼接的方式看起來混亂難讀,下面是JS簡單實現(xiàn)版本(沒有嚴(yán)格測試)2014-08-08
Echats圖表大屏自適應(yīng)的實現(xiàn)方法
很多時候我們需要用圖表來制作我們統(tǒng)計的數(shù)據(jù)直觀的分析,所以我們可以用Echarts來制作圖表,這篇文章主要給大家介紹了關(guān)于Echats圖表大屏自適應(yīng)的實現(xiàn)方法,需要的朋友可以參考下2021-10-10
javascript getBoundingClientRect() 來獲取頁面元素的位置的代碼[修正版]
該方法已經(jīng)不再是IE Only了,F(xiàn)F3.0+和Opera9.5+已經(jīng)支持了該方法,可以說在獲得頁面元素位置上效率能有很大的提高,在以前版本的Opera和Firefox中必須通過循環(huán)來獲得元素在頁面中的絕對位置。2009-05-05
javascript中的類,繼承,構(gòu)造函數(shù)詳解
這篇文章主要為大家詳細(xì)介紹了javascript中的類,繼承,構(gòu)造函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02

