这种方法需要引用jQuery的$.extend方法,因此先需要引用jQuery,版本无所谓,你可以将这个方法写在公用模块内
源码:
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
//ns 可以是一个字符串,也可是指定的对象
//如果是第一次定义,必需是一个用.分隔的字符串,这个函数会创建对应的空间
function DEF_NAME_SPACE(ns,op){
switch(typeof ns){
case 'object':
if(ns===null)throw new Error('param error');
jQuery.extend(ns,op);
break;
case 'string':
var nss = ns.split(".");
var part = window;
for(i in nss){
var name = nss[i];
if(! part[name] ) part[name]= new Object();
part = part[name];
}
jQuery.extend(part,op);
break;
default:
throw new Error('param error');
break;
}
}
使用方法就很简单了
DEF_NAME_SPACE("zh",{
dotest:function(){
alert('zh.dotest');
}
});
DEF_NAME_SPACE("zh.mySpace",{
dotest:function(){
alert('zh.mySpace.dotest');
}
});
当然,有点不一样的是用这个方法来定义命名空间,命名空间里的内容实际上应该是一个JSON 表达式。