zoukankan      html  css  js  c++  java
  • js高级编程中命名空间的两种用法

    第一种:
    // 声明一个全局对象Namespace,用来注册命名空间
    Namespace = new Object();

    // 全局对象仅仅存在register函数,参数为名称空间全路径,如"Grandsoft.GEA"
    Namespace.register = function(fullNS)
    {
      // 将命名空间切成N部分, 比如Grandsoft、GEA等
       var nsArray = fullNS.split('.');
    var sEval = "";
     var sNS = "";
     for (var i = 0; i < nsArray.length; i++)
    {
    if (i != 0) sNS += ".";
    sNS += nsArray[i];
    // 依次创建构造命名空间对象(假如不存在的话)的语句
     // 比如先创建Grandsoft,然后创建Grandsoft.GEA,依次下去
     sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();"
    }
    if (sEval != "") eval(sEval);
    }
    // 注册命名空间Grandsoft.GEA, Grandsoft.GCM
    Namespace.register("Grandsoft.GEA");
    Namespace.register("Grandsoft.GCM");

    // 在Grandsoft.GEA命名空间里面声明类Person
    Grandsoft.GEA.Person = function(name, age)
    {
      this.name = name;
       this.age = age;
    }

    // 给类Person添加一个公共方法show()
    Grandsoft.GEA.Person.prototype.show = function()
    {
       alert(this.name + " is " + this.age + " years old!");
    }

    // 演示如何使用类Person
    var p = new Grandsoft.GEA.Person("yanglf", 25);
    p.show();
    第二种:
    eye = {
        namespace: function() {
            var a = arguments, o = null, i, j, d, rt;
            for (i = 0; i < a.length; ++i) {
                d = a[i].split(".");
                rt = d[0];
                eval('if (typeof ' + rt + ' == "undefined"){' + rt + ' = {};} o = ' + rt + ';');
                for (j = 1; j < d.length; ++j) {
                    o[d[j]] = o[d[j]] || {};
                    o = o[d[j]];
                }
            }
        }
    };

    eye.namespace("eye", "eye.common", "eye.datePicker", "eye.selectCity", "eye.tab","eye.test");
    eye.test={//测试命名空间
        show: function() {
            return "aaa";
        }
    }
    alert(eye.test.show());//命名空间

  • 相关阅读:
    WebStorm2019
    微信公众号互阅平台-真实提高阅读量-「作者加鸡腿」
    macos 致命错误: 在类路径或引导类路径中找不到程序包 java.lang
    IDEA2020激活码 / IDEA 2020.1.2激活破解教程
    Linux命令大全
    2019年终总结-2020展望「定版」
    SpringBoot如何切换Redis默认库
    uniapp增加百度统计代码(h5)
    修改MyEclipse/Eclipse左侧文字大小(MacOS/Windows)
    Invalid connection string format, a valid format is: "host:port:sid"
  • 原文地址:https://www.cnblogs.com/marsleoguo/p/3449740.html
Copyright © 2011-2022 走看看