zoukankan      html  css  js  c++  java
  • JavaScript注册命名空间

    前言:JavaScript中不存在命名空间的说法,但是我们也可以实现,来避免命名重复造成的困扰。

    网上找了一些,下面给出注册命名空间的代码:

    1、Ext的写法:

    function registerNameSpace(ns){
            if(typeof(ns)!="string")return;
            ns=ns.split(".");
            var o,ni;
            for(var i=0,len=ns.length;i<len,ni=ns[i];i++){
                try{
                 o=(o?(o[ni]=o[ni]||{}):(eval(ni+"="+ni+"||{}")));
                }catch(e){
                 o=eval(ni+"={}");
                }
            }
        }
    
    //注册命名空间
    
    registerNameSpace(“com.service.site”);

    2、面向对象的写法:

    /**
     * register nameSpace-------(1)
     */
    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];
        }
    };
    
    //注册命名空间
    registerNamespace("Grandsoft.GEA");
    registerNamespace("Grandsoft.GCM");
    
    /**
    * register nameSpace-------(2)
    */
    
    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);
    };
    
    //同上面(1)的效果一致
    //Namespace.register("Grandsoft.GEA");
    //Namespace.register("Grandsoft.GCM");
    
     
  • 相关阅读:
    java—在maven项目中配置selenium运行环境
    java—Maven安装配置
    java基础—异常处理
    java基础—IO流
    怎么查看chrome网络日志
    http缓存之304 last-modified,cache-control:max-age,Etag等
    dubbo源码分析7-dubbox怎么对dubbo做了扩展
    SQLite如何测试
    New line
    ElasticSearch 入门笔记1
  • 原文地址:https://www.cnblogs.com/boonya/p/2520289.html
Copyright © 2011-2022 走看看