面向对象的JavaScript(1):命名空间

    在小项目中对于JavaScript使用,只要写几个function就行了。但在大型项目中,尤其是在开发追求良好的用户体验的网站中,如SNS,就会用到大量的JavaScrpt,有时JavaScript的工作量胜过了C#,这时写一堆function,就会显得很乱,杂乱无章,甚至会出现命名冲突,管理和维护起来都很麻烦。对于这种情况我们就需要使用面向对象的思想来开发JavaScript。那我们就这样作罢:

     对于一个项目,首先要有个命名空间。所以我们首先要做的是定义一个函数来注册命名空间。代码如下:

    //  声明一个全局对象RegisterNameSpace函数,参数为名称空间全路径,如"cnblogs.blog"
RegisterNameSpace  =   function (fullName) {
    
//  将命名空间切成N部分
     var  nsArray  =  fullName.split( ' . ' );
    
var  strEval  =   "" ;
    
var  strNS  =   "" ;
    
for  ( var  i  =   0 ; i  <  nsArray.length; i ++ ) {
        
if  (i  !=   0 ){
         strNS 
+=   " . " ;
         }
        strNS 
+=  nsArray[i];
        
//  依次创建构造命名空间对象(假如不存在的话)的语句
        strEval  +=   " if (typeof( "   +  strNS  +   " ) == 'undefined')  "   +  strNS  +   "  = new Object(); "
    }
    
if  (strEval  !=   "" ) eval(strEval);
}

       好了,现在来注册几个命名空间试试,就已博客园为例吧,博客园有几个模块“博客”、“新闻”、“小组”......

RegisterNameSpace( " cnblogs.blog " );
RegisterNameSpace(
" cnblogs.news " );
RegisterNameSpace(
" cnblogs.group " );

       事实上,这里的命名空间就是一个对象,一个Object。

       如果写一堆function难免会出现变量或函数的命名冲突,应用了命名空间这种情况就从此杜绝了,而且代码易于管理。

  
原文地址:http://www.cnblogs.com/xumingxiang/archive/2010/04/30/1725148.html

作者 : 徐明祥
出处: http://www.cnblogs.com/xumingxiang 
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任

 

你可能感兴趣的:(JavaScript)