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 中的replace方法说明
Apr 13 Javascript
Javascript面象对象成员、共享成员变量实验
Nov 19 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
Jun 27 Javascript
让你的CSS像Jquery一样做筛选的实现方法
Jul 10 Javascript
JQuery触发事件例如click
Sep 11 Javascript
js操作模态窗口及父子窗口间相互传值示例
Jun 09 Javascript
谈谈JavaScript异步函数发展历程
Sep 29 Javascript
javascript执行环境及作用域详解
May 05 Javascript
实用jquery操作表单元素的简单代码
Jul 04 Javascript
清除浏览器缓存的几种方法总结(必看)
Dec 09 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
Jan 20 Javascript
浅谈vuex 闲置状态重置方案
Jan 04 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连接MySQL代码的参数说明
2008/06/07 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
Javascript Throttle & Debounce应用介绍
2013/03/19 Javascript
DOM 高级编程
2015/05/06 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
JQuery给select添加/删除节点的实现代码
2016/04/26 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
在Django的session中使用User对象的方法
2015/07/23 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
[原创]使用豆瓣提供的国内pypi源
2017/07/02 Python
python版DDOS攻击脚本
2019/06/12 Python
快速解决vue.js 模板和jinja 模板冲突的问题
2019/07/26 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
公司行政经理岗位职责
2013/12/24 职场文书
列车长先进事迹材料
2014/01/25 职场文书
服务员自我评价
2014/01/25 职场文书
小学生评语集锦
2014/04/18 职场文书
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
本科生自荐信
2014/06/18 职场文书
户籍证明格式
2014/09/15 职场文书
保安辞职信范文
2015/02/28 职场文书
工作失职自我检讨书
2015/05/05 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js