js命名空间笔记

  在量比较大或者多人编写的情况下,命名冲突就很有可能发生,同一个页面引用了两个命名相同功能不同的文件,调用的时候就会出问题。因此使用JS命名空间很重要。

1.采用字面量方法创建命名空间:

var a={

   login:function(){……}

}

var b={

   login:function(){……}

}//可以在a空间里面的login里面加入所需要的属性和方法。

2.

var com;

if(!com) com={};//第一级域名

com.ModuleClass={};//第二级域名

com.ModuleClass.函数名1=function(){函数体;}

com.ModuleClass.函数名2=function(){函数体;}

3.使用动态方法创建(有两种方法,1.window对象实现 2.eval实现)

//window实现

var namaSpace=nameSpace||{};

(function(){

var global=window;

nameSpace.ns=function(nsStr){

var parts=nsStr.split('.');

root=global;

i;

for(i=0,max=parts.length;i<max;i++){

if(typeof root[parts[i]]==="undefined"){

root[parts[i]]={};

}

root=root[parts[i]];

}

return root;

};

})();

使用命名空间:

nameSpace.ns("BP.login");

BP.login={

  min_height=660;

  min_width=1024;

  isIE:false;

   init:function(){

      this.isIE=$.browser.msie;

       this.regEvent();

       this.initPage();

         BP.page.i18nInit();

  }

}

使用其中的函数:

<html>

<head>

  <mata name="others" content="login_page">

  <script>

   $(document).ready(function(){

    BP.login.init(); 

     });

</sctipt>

</head>

<body>

</body>

</html>

// eval实现

 a.命名空间注册工具类

        var Namespace=new Object();

           Namespacr.register=function(path){

              var arr=path.split('.');

              var ns="";

              for(var i=0;i<arr.length;i++){

                 if(i>0)  ns+=".";

                 ns+=arr[i];

                 eval("if(typeof("+ns+")=='undefined')"+ns+"=new Object();");

            }

     }

b.注册命名空间com.boohee.ui

Namespace.register('com.boohee.ui')

c.使用命名空间

com.boohee.ui.TreeGrid=function(){

   this.sayHello=function(name){

     alert("hello"+name);

  }

}

var t=new com.boohee.ui.TreeGrid();

t.sayHello('uid');

原文地址:https://www.cnblogs.com/lionisnotkitty/p/5978046.html