【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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?