日期:2014-05-16  浏览次数:20313 次

一种简便定义javascript命名空间的方法

这种方法需要引用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 表达式。