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 相关文章推荐
学习ExtJS Panel常用方法
Oct 07 Javascript
COM中获取JavaScript数组大小的代码
Nov 22 Javascript
js日期相关函数总结分享
Oct 15 Javascript
js实现文本框中焦点在最后位置
Mar 04 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
Jun 30 Javascript
Prototype框架详解
Nov 25 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
Mar 21 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
May 11 Javascript
浅谈JavaScript异步编程
Jan 20 Javascript
前端开发必知的15个jQuery小技巧
Jan 22 Javascript
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
vue 实现基础组件的自动化全局注册
Dec 25 Vue.js
你需要知道的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
用PHP制作静态网站的模板框架(四)
2006/10/09 PHP
php不用正则采集速度探究总结
2008/03/24 PHP
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
juqery 学习之四 筛选过滤
2010/11/30 Javascript
IE6下focus与blur错乱的解决方案
2011/07/31 Javascript
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
动态加载js和css(外部文件)
2013/04/17 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
2017/03/08 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
2017/12/27 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
对Python中DataFrame按照行遍历的方法
2018/04/08 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
Python3远程监控程序的实现方法
2019/07/15 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
聊城大学毕业生自荐书
2014/02/01 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
入党积极分子考察意见
2015/06/02 职场文书
太行山上观后感
2015/06/05 职场文书
Python实现批量自动整理文件
2022/03/16 Python