命名空間是透過為專案或庫建立一個全域物件,然後將所有功能加入到該全域變數。透過減少程式中全域變數的數量,實現單全域變量,從而在具有大量函數、物件和其他變數的情況下不會造成全域污染,同時也避免了命名衝突等問題
然而,在不同的檔案中為一個命名空間加上屬性的時候,首先要保證這個命名空間是已經存在的,同時不對現有的命名空間造成任何破壞。可以透過非破壞性的命名空間函數實作:
程式碼如下:
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");
看一下經過上述後KUI都有什麼:
代碼如下:
{ "utils": {}, "common": { "testing": {} }, "modules": { "function": { "plugins": {} } }, "format": {} }
命名空間模式的缺點
1.需要輸入更長的字符,並且需要更長的解析時間;
2.對單全域變數的依賴性,即任何程式碼都可以修改該全域實例,其他程式碼將獲得修改後的實例。
以上是Javascript 命名空間模式程式碼範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!