日期:2014-05-16 浏览次数:20339 次
这种方法需要引用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 表达式。