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 相关文章推荐
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
Jun 14 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
Jun 26 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
Oct 17 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
Jan 02 Javascript
JS实现网页表格自动变大缩小的方法
Mar 09 Javascript
JS实现列表的响应式排版(推荐)
Sep 01 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
Nov 29 Javascript
js编写简单的聊天室功能
Aug 17 Javascript
JS沙箱模式实例分析
Sep 04 Javascript
tangram.js库实现js类的方式实例分析
Jan 06 Javascript
vue+element-ui动态生成多级表头的方法
Aug 28 Javascript
深入学习js函数的隐式参数 arguments 和 this
Jun 24 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
PHPMailer安装方法及简单实例
2008/11/25 PHP
关于页面优化和伪静态
2009/10/11 PHP
来自phpguru得Php Cache类源码
2010/04/15 PHP
比较discuz和ecshop的截取字符串函数php版
2012/09/03 PHP
php实现的SESSION类
2014/12/02 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
PHP微商城开源代码实例
2019/03/27 PHP
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
JavaScript EasyPager 分页函数
2011/05/25 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
解决webpack无法通过IP地址访问localhost的问题
2018/02/22 Javascript
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
在Python中调用ggplot的三种方法
2015/04/08 Python
使用python加密自己的密码
2015/08/04 Python
python中函数传参详解
2016/07/03 Python
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
python模拟实现斗地主发牌
2020/01/07 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
详解HTML5之pushstate、popstate操作history,无刷新改变当前url
2017/03/15 HTML / CSS
日本著名的平价时尚女性购物网站:Fifth
2016/08/24 全球购物
彪马英国官网:PUMA英国
2019/02/11 全球购物
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
Java多态性的定义以及类型
2014/09/16 面试题
代理班主任的自我评价
2014/02/04 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
运动会闭幕式主持词
2015/07/01 职场文书
团委副书记工作总结
2015/08/14 职场文书
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android