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 相关文章推荐
javascript中的几个运算符
Jun 29 Javascript
javascript实现动态CSS换肤技术的脚本
Jun 29 Javascript
jquery1.4后 jqDrag 拖动 不可用
Feb 06 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
Jun 28 Javascript
Jquery实现动态切换图片的方法
May 18 Javascript
javascript检测移动设备横竖屏
May 21 Javascript
深入浅析javascript中的作用域(推荐)
Jul 19 Javascript
JavaScript严格模式详解
Jan 16 Javascript
简单实现js倒计时功能
Feb 13 Javascript
在 Angular 中实现搜索关键字高亮示例
Mar 21 Javascript
template.js前端模板引擎使用详解
Oct 10 Javascript
JQuery 又谈ajax局部刷新
Nov 27 jQuery
你需要知道的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
BBS(php & mysql)完整版(二)
2006/10/09 PHP
php抽象类用法实例分析
2015/07/07 PHP
浅谈PHP的反射机制
2016/12/15 PHP
php use和include区别总结
2019/10/13 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
JS短路原理的应用示例 精简代码的途径
2013/12/13 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
JQuery实现可直接编辑的表格
2015/04/16 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
react-router实现按需加载
2017/05/09 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
2017/06/13 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
vue组件与复用详解
2018/04/08 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
python基础教程之面向对象的一些概念
2014/08/29 Python
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
2015/05/20 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
python 2.7.14安装图文教程
2018/04/08 Python
Python异常处理例题整理
2019/07/07 Python
Django之模板层的实现代码
2019/09/09 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
中专毕业生求职简历的自我评价
2013/10/21 职场文书
上班早退检讨书
2014/01/09 职场文书
个人承诺书格式
2014/06/03 职场文书
董事长秘书工作职责
2014/06/10 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
学雷锋感言
2015/08/03 职场文书
vue+spring boot实现校验码功能
2021/05/27 Vue.js