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 相关文章推荐
表单元素事件 (Form Element Events)
Jul 17 Javascript
js 得到文件后缀(通过正则实现)
Jul 08 Javascript
jQuery.uploadify文件上传组件实例讲解
Sep 23 Javascript
微信小程序 http请求详细介绍
Oct 09 Javascript
Angularjs 与 bower安装和使用详解
May 11 Javascript
简单谈谈原生js的math对象
Jun 27 Javascript
关于TypeScript中import JSON的正确姿势详解
Jul 25 Javascript
简单谈谈JS中的正则表达式
Sep 11 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
Apr 25 Javascript
Vue发布项目实例讲解
Jul 17 Javascript
小程序实现锚点滑动效果
Sep 23 Javascript
js实现鼠标拖曳效果
Dec 30 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
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
js禁止回车提交表单的示例代码
2013/12/23 Javascript
jquery选择checked在ie8普通模式下的问题
2014/02/12 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
Jquery实现跨域异步上传文件总结
2017/02/03 Javascript
jQuery Ajax全解析
2017/02/13 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
原生JavaScript实现轮播图
2021/01/10 Javascript
[51:28]EG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/16 DOTA
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
python基于SMTP协议发送邮件
2019/05/31 Python
Python列表操作方法详解
2020/02/09 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
部队领导证婚词
2014/01/12 职场文书
初婚初育证明
2014/01/14 职场文书
行政监察建议书
2014/05/19 职场文书
乳制品整治工作方案
2014/05/29 职场文书
2014年图书馆工作总结
2014/11/25 职场文书