JavaScript创建命名空间(namespace)的最简实现
JavaScript创建命名空间(namespace)的最简实现
发布时间:2016-12-30 来源:查字典编辑
摘要:最近看Ext源代码,看到了其实现命名空间函数的实现方法:ExtNameSpace实现代码:复制代码代码如下:namespace:functi...

最近看Ext源代码,看到了其实现命名空间函数的实现方法:

ExtNameSpace实现代码:

复制代码 代码如下:

namespace:function(){

vara=arguments,o=null,i,j,d,rt;

for(i=0;i<a.length;++i){

d=a[i].split(".");

rt=d[0];

eval('if(typeof'+rt+'=="undefined"){'+rt+'={};}o='+rt+';');

for(j=1;j<d.length;++j){

o[d[j]]=o[d[j]]||{};

o=o[d[j]];

}

}

}

鄙人喜好最简编程(这很多时候并不是一个好习惯,写的越简单程序一般越难理解),于是就想用更短的方式解决这个问题。

尝试了将近半个小时写下了下面的实现,基本该考虑的情况都考虑,至少不会覆盖页面已经存在的函数。

实现代码如下:

复制代码 代码如下:

functionnamespace(ns){

if(typeof(ns)!="string")return;

ns=ns.split(".");

varo,ni;

for(vari=0,len=ns.length;i<len,ni=ns[i];i++){

try{o=(o?(o[ni]=o[ni]||{}):(eval(ni+"="+ni+"||{}")))}catch(e){o=eval(ni+"={}")}

}

}

你可以保存以下代码进行测试:

测试代码:

复制代码 代码如下:

<scripttype="text/javascript">

<>

</script>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类