网上有很多了,这里给出一个,其实思路就是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");

转载于:https://www.cnblogs.com/Mainz/archive/2011/07/28/2119578.html

JavaScript命名空间namespace的实现方法相关推荐

  1. javascript之namespace模式

    JavaScript 的命名空间并不是真正的命名空间, 只是在脚本内部创建一个封闭的小空间, 必须通过特定的空间名称才能对空间内部的代码进行访问, 这样可以防止同名函数和变量发生冲突, 也可以更方便地 ...

  2. JavaScript 命名空间

    使用过Java.C#的同学对命名空间非常的熟悉,在复杂的系统中会有N多的函数.对象,语言提供的.架构预定义的,这么多的函数和对象,由于编程规范要求起有实际意义的名字,难免会重名发生错误调用,而有了命名 ...

  3. PHP 命名空间(namespace)

    2019独角兽企业重金招聘Python工程师标准>>> PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Ja ...

  4. PHP命名空间(Namespace)的使用详解(转)

    对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...

  5. C++命名空间 namespace的作用和使用解析

    一. 为什么需要命名空间(问题提出) 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突.    在 C语言中定义了3个层次的作用域,即文件(编译单元).函数和复合语 ...

  6. 【C++ 语言】命名空间 ( namespace | 命名空间定义 | 命名空间嵌套 | 域作用符 | 与 include 对比 )

    文章目录 命名空间简介 自定义命名空间 自定义嵌套命名空间 域作用符 命名空间 与 include 区别 命名空间定义与使用完整代码 命名空间简介 命名空间 ( namespace ) : 1.命名空 ...

  7. 【小白学习C++ 教程】十三、C++命名空间namespace

    @Author:Runsen 文章目录 访问命名空间 嵌套命名空间 命名空间别名 任何C++程序都有声明namespace,比如下面的C++程序没有声明namespace int main() {in ...

  8. PHP命名空间(Namespace)的使用详解

    对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...

  9. XAML实例教程系列 - 命名空间(NameSpace) 三

    XAML实例教程系列 - 命名空间(NameSpace) 2012-05-28 14:14 by jv9, 2205 阅读, 10 评论, 收藏, 编辑 上一篇曾提及XAML中,每个对象元素的声明是对 ...

最新文章

  1. NIX***检测方法
  2. ES6 实用开发技巧
  3. 阿里巴巴CEO马云最新超经典哲学语录
  4. CMake结合Visual Studio中开发Qt应用程序注意事项
  5. Linux+db2+was部署问题总结
  6. SpringBoot2 整合 CXF 服务端和客户端
  7. 华为云企业级Redis评测第一期:稳定性与扩容表现
  8. android 开机小企鹅_手机root是好是坏 小编来帮你分析
  9. 138. 复制带随机指针的链表
  10. Intellij IDEA--导入导出配置
  11. 【VBA宏编程】——Excel操作
  12. 一天掌握DID模型,传统DID+多期DID+DID模型扩展PSM-DID+空间DID结合论文实现
  13. 用python下载视频代码_python实现视频下载
  14. python桌面精灵_360uu游戏盒子
  15. BIDI单纤双向光模块
  16. C语言编程>第十六周 ② 函数fun的功能是:统计长整数test的各位上出现数字5、6、7的次数,并通过外部(全局)变量sum5、sum6、sum7返回主函数。
  17. diy nas配置推荐2019_打造家用NAS之一(2019年版)
  18. 新一代Json解析库Moshi使用及原理解析
  19. java new date 减一天_java日期增加一个月或减少一天
  20. CentOS 6或者7的YUM源服务器搭建

热门文章

  1. node --- Missing write access to 解决
  2. CSV出力ボタンラッパー(asp.net)[イベントの作り方に役立つ]
  3. for循环和数组练习
  4. 第四篇:白话tornado源码之褪去模板外衣的前戏
  5. SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用
  6. HTML5实现刮奖效果
  7. 我们买得起nook,kindle fire可我们买不起书啊
  8. Apache日志配置
  9. 有了螃蟹让心情好一点
  10. 【深度学习torch——error】——“xxx.pt is a zip archive(did you mean to use torch.jit.load()?)