Posted in Javascript onNovember 01, 2013
然而,在不同的文件中给一个命名空间添加属性的时候,首先要保证这个命名空间是已经存在的,同时不对已有的命名空间造成任何破坏。可以通过非破坏性的命名空间函数实现:
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 命名空间模式
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@