zoukankan      html  css  js  c++  java
  • JavaScript创建命名空间

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
     <head>
      <title>在JavaScript中实现命名空间</title>
      <script language="JavaScript">
    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);
    }

    registerNamespace = function(nsName) {
        var rootObject = window;
        var namespaceParts = nsName.split('.');
        for (var i = 0;i < namespaceParts.length; i++) {
            var currentPart = namespaceParts[i];
            if (!rootObject[currentPart]) {
                rootObject[currentPart] = new Object();
            }
            rootObject = rootObject[currentPart];
        }
    }

    // 注册命名空间Grandsoft.GEA, Grandsoft.GCM

    registerNamespace("Grandsoft.GEA");
    registerNamespace("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();
      </script>
     </head>

     <body>

     </body>
    </html>

  • 相关阅读:
    将HTTP请求对象转成curl命令行
    图片爬虫实践
    [CF1499E] Chaotic Merge
    [ICPC2020南京I] Interested in Skiing
    [ICPC2018西安J] Philosophical … Balance
    [ICPC2018西安L] Eventual … Journey
    [ICPC2018西安I] Misunderstood … Missing
    [ICPC2018西安D] Deja vu of … Go Players
    [ICPC2018西安F] Interstellar … Fantasy
    [ICPC2020南京L] Let's Play Curling
  • 原文地址:https://www.cnblogs.com/cztom/p/916760.html
Copyright © 2011-2022 走看看