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循环变量注册dom事件 之强大的闭包
Sep 08 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
Jan 30 Javascript
JS+CSS实现Li列表隔行换色效果的方法
Feb 16 Javascript
js闭包所用的场合以及优缺点分析
Jun 22 Javascript
JS组件系列之Bootstrap Icon图标选择组件
Jan 28 Javascript
vue.js 初体验之Chrome 插件开发实录
May 13 Javascript
微信小程序自定义tab实现多层tab嵌套功能
Jun 15 Javascript
微信小程序实现团购或秒杀批量倒计时
Nov 01 Javascript
vue中使用gojs/jointjs的示例代码
Aug 24 Javascript
微信小程序实现文字无限轮播效果
Dec 28 Javascript
layui时间控件选择时间范围的实现方法
Sep 28 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
Aug 20 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
PHP4实际应用经验篇(7)
2006/10/09 PHP
PHP XML操作类DOMDocument
2009/12/16 PHP
PHP合并两个数组的两种方式的异同
2012/09/14 PHP
Zend的MVC机制使用分析(一)
2013/05/02 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
Javascript中Eval函数的使用
2010/03/23 Javascript
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
jquery实现提示语淡入效果
2017/05/05 jQuery
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
python单线程实现多个定时器示例
2014/03/30 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
2018/12/15 Python
Python Celery多队列配置代码实例
2019/11/22 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
自我评价200字分享
2013/12/17 职场文书
机电职业生涯规划书范文
2014/03/08 职场文书
学校教师安全责任书
2014/07/23 职场文书
签证工作证明模板
2015/06/15 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
教你用Python写一个植物大战僵尸小游戏
2021/04/25 Python
如何利用Python实现一个论文降重工具
2021/07/09 Python