最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript创建命名空间(namespace)的最简实现_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 20:38:28
文档

JavaScript创建命名空间(namespace)的最简实现_javascript技巧

JavaScript创建命名空间(namespace)的最简实现_javascript技巧:最近看Ext源代码,看到了其实现命名空间函数的实现方法: Ext NameSpace实现代码: 代码如下: namespace : function(){ var a=arguments, o=null, i, j, d, rt; for (i=0; i d=a[i].split(.); rt = d[0];
推荐度:
导读JavaScript创建命名空间(namespace)的最简实现_javascript技巧:最近看Ext源代码,看到了其实现命名空间函数的实现方法: Ext NameSpace实现代码: 代码如下: namespace : function(){ var a=arguments, o=null, i, j, d, rt; for (i=0; i d=a[i].split(.); rt = d[0];


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

Ext NameSpace实现代码:
代码如下:
namespace : function(){
var a=arguments, o=null, i, j, d, rt;
for (i=0; i d=a[i].split(".");
rt = d[0];
eval('if (typeof ' + rt + ' == "undefined"){' + rt + ' = {};} o = ' + rt + ';');
for (j=1; j o[d[j]]=o[d[j]] || {};
o=o[d[j]];
}
}
}


鄙人喜好最简编程(这很多时候并不是一个好习惯,写的越简单程序一般越难理解),于是就想用更短的方式解决这个问题。
尝试了将近半个小时写下了下面的实现,基本该考虑的情况都考虑,至少不会覆盖页面已经存在的函数。

实现代码如下:
代码如下:
function namespace(ns){
if(typeof(ns)!="string")return;
ns=ns.split(".");
var o,ni;
for(var i=0,len=ns.length;i try{o=(o?(o[ni]=o[ni]||{}):(eval(ni+"="+ni+"||{}")))}catch(e){o=eval(ni+"={}")}
}
}

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

测试代码:

代码如下:

function namespace(ns){
if(typeof(ns)!="string")return;
ns=ns.split(".");
var o,ni;
for(var i=0,len=ns.length;i try{o=(o?(o[ni]=o[ni]||{}):(eval(ni+"="+ni+"||{}")))}catch(e){o=eval(ni+"={}")}
}
}
function a(){return 5}
namespace("a.b");
alert(a);
alert(a.b)
namespace("test.test.abc")
test.test.abc.func1=function(){
alert('func1 run')
}
alert(test.test)
test.test.abc.func1();
//-->

文档

JavaScript创建命名空间(namespace)的最简实现_javascript技巧

JavaScript创建命名空间(namespace)的最简实现_javascript技巧:最近看Ext源代码,看到了其实现命名空间函数的实现方法: Ext NameSpace实现代码: 代码如下: namespace : function(){ var a=arguments, o=null, i, j, d, rt; for (i=0; i d=a[i].split(.); rt = d[0];
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top