【js拾遗】名称空间

简介: function NameSpace(ns) { if (!ns) { return null; } var arr = ns.
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);

 

目录
相关文章
|
8月前
|
存储 JavaScript 前端开发
|
2月前
Three.js点线几何空间图形代码
Three.js点线几何空间图形代码
15 2
Three.js点线几何空间图形代码
|
JavaScript 存储 前端开发
|
JavaScript API
arcgis js 空间关系查询
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bitree1/article/details/78425222 ARCGIS空间查询关系  Boundary(边界): 只有线和面才有边界。
1017 0
|
JavaScript
js拾遗:appendChild 添加移动节点
原文:js拾遗:appendChild 添加移动节点 写js一年多了,一直以为自己很牛逼,开始写各种博文分享,昨天写了一篇《浅谈 IE下innerHTML导致的问题》在看了下面的评论,我才发现自己是多么无知。
910 0
|
JavaScript
【JS拾遗】函数的参数
var test = function (arg1, arg2) { alert(arg1 + "_" + arg2); } //alert出来的是 liu_lun test("liu", "l...
633 0
|
13天前
|
存储 移动开发 JavaScript
学习javascript,前端知识精讲,助力你轻松掌握
学习javascript,前端知识精讲,助力你轻松掌握
|
20天前
|
JavaScript 前端开发 测试技术
学习JavaScript
【4月更文挑战第23天】学习JavaScript
13 1
|
28天前
|
JavaScript 前端开发 应用服务中间件
node.js之第一天学习
node.js之第一天学习