• 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());//命名空间

  • 相关阅读:
    Vue cmd命令操作
    迭代器和生成器
    10-外键的变种 三种关系
    09-完整性约束
    08-数据类型(2)
    07-数据类型
    06-表的操作
    05-库的操作
    04-基本的mysql语句
    03-MySql安装和基本管理
  • 原文地址:https://www.cnblogs.com/marsleoguo/p/3449740.html
Copyright © 2020-2023  润新知