zoukankan      html  css  js  c++  java
  • 【js拾遗】名称空间

    function NameSpace(ns) {
                if (!ns) {
                    return null;
                }
                var arr = ns.split('.');
                //第一次调用的时候window.utry的值为{};
                //第二次调用的时候window.utry的值为window.utry;
                window[arr[0]] = window[arr[0]] || {};
                //obj是window.utry的引用
                var obj = window[arr[0]];
                //result也是window.utry的引用
                var result = obj;
                var len = arr.length;
                //注意i是从1开始的
                for (var i = 1; i < len; i++) {
                    //第一次调用的第一次循环obj.base的值是{};
                    //因为obj是window.utry的引用,那么window.utry.base的值就是{};
                    obj[arr[i]] = obj[arr[i]] || {};
                    //obj变成了window.utry.base的引用
                    //第二次循环的时候,就变成了对window.utry.base.sys的赋值了
                    obj = obj[arr[i]];
                }
                return result;
            }
            NameSpace("utry.base.sys");
            utry.base.sys.fn = function () {
                alert("这是名称空间里的一个方法");
            }
            //这是为了证明函数不会被覆盖掉
            NameSpace("utry.base.sys");
            utry.base.sys.fn();
            //咦,这样可以打印出函数体
            alert(utry.base.sys.fn);
  • 相关阅读:
    nginx公网IP无法访问浏览器
    Internet接入方式
    Adobe Photoshop Lightroom 5.3和序列号
    getopt
    printf
    scanf
    cycling -avoid the vicious cycle
    ACE handle_timeout 事件重入
    Linux查看程序端口占用
    The GNU C Library
  • 原文地址:https://www.cnblogs.com/liulun/p/2853650.html
Copyright © 2011-2022 走看看