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 相关文章推荐
编写兼容IE和FireFox的脚本
May 18 Javascript
jQuery页面滚动浮动层智能定位实例代码
Aug 23 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
Jan 29 Javascript
jQuery基本选择器选择元素使用介绍
Apr 18 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
Apr 26 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
Jun 05 Javascript
原生js和jquery中有关透明度设置的相关问题
Jan 08 Javascript
基于node实现websocket协议
Apr 25 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
Sep 14 Javascript
Angularjs中controller的三种写法分享
Sep 21 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
May 05 Javascript
js编写简易的计算器
Jul 29 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中文分词的简单实现代码分享
2011/07/17 PHP
PHP编译安装中遇到的两个错误和解决方法
2014/08/20 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
jQuery取得select选择的文本与值的示例
2013/12/09 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
JS二分查找算法详解
2017/11/01 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
原生javascript制作贪吃蛇小游戏的方法分析
2020/02/26 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
Python中os.path用法分析
2015/01/15 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
2019/08/18 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
奥运会口号
2014/06/13 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
酒会开场白大全
2015/06/01 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
理解python中装饰器的作用
2021/07/21 Python
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android
MySQL三种方式实现递归查询
2022/04/18 MySQL
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis