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 相关文章推荐
js onpropertychange输入框 事件获取属性
Mar 26 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
May 31 Javascript
indexOf 和 lastIndexOf 使用示例介绍
Sep 02 Javascript
js中的json对象详细介绍
Oct 29 Javascript
javascript获取文档坐标和视口坐标
May 26 Javascript
JS插件plupload.js实现多图上传并显示进度条
Nov 29 Javascript
Html中 IFrame的用法及注意点
Dec 22 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
Mar 29 Javascript
在 Node.js 中使用 async 函数的方法
Nov 17 Javascript
vue项目优化之通过keep-alive数据缓存的方法
Dec 11 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
Aug 22 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
Aug 07 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
ezSQL PHP数据库操作类库
2010/05/16 PHP
解析strtr函数的效率问题
2013/06/26 PHP
PHP的PSR规范中文版
2013/09/28 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
json 实例详细说明教程
2009/10/31 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
10分钟学会写Jquery插件实例教程
2014/09/06 Javascript
JS中的form.submit()不能提交表单的错误原因
2014/10/08 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
浅谈Angular单元测试总结
2019/03/22 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
跟老齐学Python之集合(set)
2014/09/24 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
python3 logging日志封装实例
2020/04/08 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
HTML5实现经典坦克大战坦克乱走还能发出一个子弹
2013/09/02 HTML / CSS
JBL美国官方商店:扬声器、耳机等
2019/12/01 全球购物
新大陆软件面试题
2016/11/24 面试题
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
党员政治学习材料
2014/05/14 职场文书
汽修专业自荐信
2014/07/07 职场文书
室内趣味活动方案
2014/08/24 职场文书
邀请书格式范文
2015/02/02 职场文书
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技