JavaScript 编程引入命名空间的方法


Posted in Javascript onJune 29, 2007

JavaScript 代码一般最常见的语法格式就是定义函数 function xxx(){/*code...*/},经常有这样的一大堆函数定义。函数名很容易发生冲突,特别是引入多个js文件时,冲突的情况尤为明显。因此也就有引入命名空间的必要。
Javascript 本身没有命名空间的概念,需要用对象模拟出来。
比如定义一个命名空间的类,用于创建命名空间:

function NameSpace(){
}

这是一个构造函数,但却不做任何事情,再来下面和评论有关的代码:

var comment = new NameSpace();
comment.list = function(){/*code...*/};
comment.counter = 0;

第一行创建所谓命名空间(其实就是一个空白对象),名为comment,第二、三行定义该空间下的两个方法。调用时可以使用 comment.list() 或者 comment.counter++ 等;
再创建子命名空间:

comment.add = new NameSpace();
comment.add.post = function(){/*code...*/}
comment.add.check = function(){}

之所以引入命名空间的概念,是为了避免函数名相同的问题。上面的过程也可以这样定义:

var comment = {
list : function(){/*code...*/},
add  : {
 post  :  function(){/*code...*/},
 check :  function(){/*code...*/}
}
}

prototype.js 里面就大量使用这种方式,虽然这种方式更直观地像一棵树,但只要节点稍多一些,眼睛就忙于寻找这些节点的关系,命名空间的做法是横向地描述这种关系树,层次关系直接表现在字面上,两种方式效果一致,但书写风格却各有特点。

Javascript 相关文章推荐
node.js中的emitter.on方法使用说明
Dec 10 Javascript
Bootstrap3制作图片轮播效果
May 12 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
Oct 25 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
Dec 21 Javascript
详解Angular 自定义结构指令
Jun 21 Javascript
Kindeditor单独调用多图上传实例
Jul 31 Javascript
vue 录制视频并压缩视频文件的方法
Jul 27 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
Aug 15 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 jQuery
axios如何取消重复无用的请求详解
Dec 15 Javascript
JavaScript实现电灯开关小案例
Mar 30 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
Aug 14 Javascript
你需要知道的JavsScript可以做什么?
Jun 29 #Javascript
ECMAScript 基础知识
Jun 29 #Javascript
javascript中的几个运算符
Jun 29 #Javascript
一个加载js文件的小脚本
Jun 28 #Javascript
javascript实现的鼠标链接提示效果生成器代码
Jun 28 #Javascript
用js实现控制内容的向上向下滚动效果
Jun 26 #Javascript
脚本安需导入(装载)的三种模式的对比
Jun 24 #Javascript
You might like
写一个用户在线显示的程序
2006/10/09 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
使用JavaScript switch case 另类写法
2010/03/14 Javascript
javascript中的new使用
2010/03/20 Javascript
JS面向对象编程之对象使用分析
2010/08/19 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
详解Python中的日志模块logging
2015/06/19 Python
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
Python制作钉钉加密/解密工具
2016/12/07 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
Python自定义简单图轴简单实例
2018/01/08 Python
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
简单了解python元组tuple相关原理
2019/12/02 Python
python MD5加密的示例
2020/10/19 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
客户代表实习人员自我鉴定
2013/09/27 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
三下乡个人总结
2015/03/04 职场文书
redis中lua脚本使用教程
2021/11/01 Redis