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");
转载于:https://www.cnblogs.com/Mainz/archive/2011/07/28/2119578.html
JavaScript命名空间namespace的实现方法相关推荐
- javascript之namespace模式
JavaScript 的命名空间并不是真正的命名空间, 只是在脚本内部创建一个封闭的小空间, 必须通过特定的空间名称才能对空间内部的代码进行访问, 这样可以防止同名函数和变量发生冲突, 也可以更方便地 ...
- JavaScript 命名空间
使用过Java.C#的同学对命名空间非常的熟悉,在复杂的系统中会有N多的函数.对象,语言提供的.架构预定义的,这么多的函数和对象,由于编程规范要求起有实际意义的名字,难免会重名发生错误调用,而有了命名 ...
- PHP 命名空间(namespace)
2019独角兽企业重金招聘Python工程师标准>>> PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Ja ...
- PHP命名空间(Namespace)的使用详解(转)
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
- C++命名空间 namespace的作用和使用解析
一. 为什么需要命名空间(问题提出) 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突. 在 C语言中定义了3个层次的作用域,即文件(编译单元).函数和复合语 ...
- 【C++ 语言】命名空间 ( namespace | 命名空间定义 | 命名空间嵌套 | 域作用符 | 与 include 对比 )
文章目录 命名空间简介 自定义命名空间 自定义嵌套命名空间 域作用符 命名空间 与 include 区别 命名空间定义与使用完整代码 命名空间简介 命名空间 ( namespace ) : 1.命名空 ...
- 【小白学习C++ 教程】十三、C++命名空间namespace
@Author:Runsen 文章目录 访问命名空间 嵌套命名空间 命名空间别名 任何C++程序都有声明namespace,比如下面的C++程序没有声明namespace int main() {in ...
- PHP命名空间(Namespace)的使用详解
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
- XAML实例教程系列 - 命名空间(NameSpace) 三
XAML实例教程系列 - 命名空间(NameSpace) 2012-05-28 14:14 by jv9, 2205 阅读, 10 评论, 收藏, 编辑 上一篇曾提及XAML中,每个对象元素的声明是对 ...
最新文章
- NIX***检测方法
- ES6 实用开发技巧
- 阿里巴巴CEO马云最新超经典哲学语录
- CMake结合Visual Studio中开发Qt应用程序注意事项
- Linux+db2+was部署问题总结
- SpringBoot2 整合 CXF 服务端和客户端
- 华为云企业级Redis评测第一期:稳定性与扩容表现
- android 开机小企鹅_手机root是好是坏 小编来帮你分析
- 138. 复制带随机指针的链表
- Intellij IDEA--导入导出配置
- 【VBA宏编程】——Excel操作
- 一天掌握DID模型,传统DID+多期DID+DID模型扩展PSM-DID+空间DID结合论文实现
- 用python下载视频代码_python实现视频下载
- python桌面精灵_360uu游戏盒子
- BIDI单纤双向光模块
- C语言编程>第十六周 ② 函数fun的功能是:统计长整数test的各位上出现数字5、6、7的次数,并通过外部(全局)变量sum5、sum6、sum7返回主函数。
- diy nas配置推荐2019_打造家用NAS之一(2019年版)
- 新一代Json解析库Moshi使用及原理解析
- java new date 减一天_java日期增加一个月或减少一天
- CentOS 6或者7的YUM源服务器搭建
热门文章
- node --- Missing write access to 解决
- CSV出力ボタンラッパー(asp.net)[イベントの作り方に役立つ]
- for循环和数组练习
- 第四篇:白话tornado源码之褪去模板外衣的前戏
- SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用
- HTML5实现刮奖效果
- 我们买得起nook,kindle fire可我们买不起书啊
- Apache日志配置
- 有了螃蟹让心情好一点
- 【深度学习torch——error】——“xxx.pt is a zip archive(did you mean to use torch.jit.load()?)