JavaScript命名空间namespace的实现方法
网上有很多了,这里给出一个,其实思路就是A={}; A.b={};其实b是A的一个属性。只是做了一些封装,最后的效果是可以直接定义多个namespace:
1: My.namespace("Company", "Company.Feed", "Company.Feed.Messaging");
具体的实现方法,用到了arguments, eval等JavaScript函数:
1: //namespace的实现
2: var MyFramework = {};
3:
4: MyFramework.namespace=function(){
5: var a=arguments, o=null, i, j, d, rt;
6: for (i=0; i<a.length; ++i) {
7: d=a[i].split(".");
8: rt = d[0];
9: eval("if (typeof (" + rt + ") == 'undefined'){" + rt + "= {};} o = "+ rt + ";");
10: for (j=1; j<d.length; ++j) {
11: o[d[j]]=o[d[j]] || {};
12: o=o[d[j]];
13: }
14: }
15: };
使用方法:
1: MyFramework.namespace("MyCompany.feed", "IBM.common"); //直接定义多个namespace
2:
3: MyCompany.feed =
4: {
5: alert: function (msg) {
6: alert(msg);
7: },
8:
9: load: function () {
10: }
11:
12: };
13:
14: MyCompany.feed.test = function (t){
15: alert("MyCompany.feed.test : "+t);
16: };
17:
18: IBM.common.messging = function (t){
19: alert("IBM.common.messging: "+t);
20: };
21:
22: MyCompany.feed.test("def");
23: MyCompany.feed.alert("abc");
24: IBM.common.messging("fff");
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述