Javascript 命名空間模式
更新時間:2013年11月01日 11:03:18 作者:
命名空間是通過為項目或庫創(chuàng)建一個全局對象,然后將所有功能添加到該全局變量中。通過減少程序中全局變量的數(shù)量,實現(xiàn)單全局變量,從而在具有大量函數(shù)、對象和其他變量的情況下不會造成全局污染,同時也避免了命名沖突等問題
然而,在不同的文件中給一個命名空間添加屬性的時候,首先要保證這個命名空間是已經(jīng)存在的,同時不對已有的命名空間造成任何破壞。可以通過非破壞性的命名空間函數(shù)實現(xiàn):
復制代碼 代碼如下:
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;
};
用法:
復制代碼 代碼如下:
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都有什么:
復制代碼 代碼如下:
{
"utils": {},
"common": {
"testing": {}
},
"modules": {
"function": {
"plugins": {}
}
},
"format": {}
}
命名空間模式的缺點
1.需要輸入更長的字符,并且需要更長的解析時間;
2.對單全局變量的依賴性,即任何代碼都可以修改該全局實例,其他代碼將獲得修改后的實例。
相關文章
layui之table checkbox初始化時選中對應選項的方法
今天小編就為大家分享一篇layui之table checkbox初始化時選中對應選項的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09ExtJs使用自定義插件動態(tài)保存表頭配置(隱藏或顯示)
這篇文章主要介紹了ExtJs使用自定義插件動態(tài)保存表頭配置(隱藏或顯示) ,需要的朋友可以參考下2018-09-09