zoukankan      html  css  js  c++  java
  • 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');

  • 相关阅读:
    SpringBoot 发送邮件
    @Component 爆红
    Java 调用OpenCV获取图像数据,发送Redis并从Redis获取数据显示
    xxx.bat windows Bat文件启动cmd命令运行jar包
    队列
    paramiko连接服务器
    matplotlib模块画坐标图
    获取当前时间
    jsonpath和打印模板
    提取图片中的文字
  • 原文地址:https://www.cnblogs.com/lionisnotkitty/p/5978046.html
Copyright © 2011-2022 走看看