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 个人笔记(没有整理,很乱)
Jul 07 Javascript
js类的静态属性和实例属性的理解
Oct 01 Javascript
Jquery中"$(document).ready(function(){ })"函数的使用详解
Dec 30 Javascript
js模拟hashtable的简单实例
Mar 06 Javascript
jQuery中的基本选择器用法学习教程
Apr 14 Javascript
js实现图片缓慢放大缩小效果
Aug 02 Javascript
javascript基本数据类型及类型检测常用方法小结
Dec 14 Javascript
bootstrapValidator.min.js表单验证插件
Feb 09 Javascript
Angular2 组件间通过@Input @Output通讯示例
Aug 24 Javascript
微信小程序实现卡片左右滑动效果的示例代码
May 01 Javascript
JS实现随机抽选获奖者
Nov 07 Javascript
JavaScript canvas实现跟随鼠标事件
Feb 10 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
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
js 创建书签小工具之理论
2011/02/25 Javascript
JS上传前预览图片实例
2013/03/25 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
Python语法快速入门指南
2015/10/12 Python
Python 爬虫图片简单实现
2017/06/01 Python
基于Python的文件类型和字符串详解
2017/12/21 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
实习护士自我鉴定
2013/10/13 职场文书
小学数学教学反思
2014/02/02 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
MySQL时区造成时差问题
2022/04/13 MySQL