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 相关文章推荐
jquery 表格分页等操作实现代码(pagedown,pageup)
Apr 11 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
Jun 29 Javascript
一个简单的js树形菜单
Dec 09 Javascript
javascript改变position值实现菜单滚动至顶部后固定
Jan 18 Javascript
js函数获取html中className所在的内容并去除标签
Sep 08 Javascript
jquery easyui使用心得
Jul 07 Javascript
Jquery对象和Dom对象的区别分析
Nov 20 Javascript
JavaScript中eval()函数用法详解
Dec 14 Javascript
sublime text配置node.js调试(图文教程)
Nov 23 Javascript
angularJS自定义directive之带参方法传递详解
Oct 09 Javascript
vue实现select下拉显示隐藏功能
Sep 30 Javascript
封装 axios+promise通用请求函数操作
Aug 11 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排序算法(冒泡排序,快速排序)
2012/10/09 PHP
php获取根域名方法汇总
2014/10/28 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
javascript 跨浏览器开发经验总结(五) js 事件
2010/05/19 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
JavaScript 原型继承
2011/12/26 Javascript
js通过地址栏给action传值(中文乱码全是问号)
2013/05/02 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
node.js中的fs.appendFileSync方法使用说明
2014/12/17 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
node.js中的事件处理机制详解
2016/11/26 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
package.json文件配置详解
2017/06/15 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
一次微信小程序内地图的使用实战记录
2019/09/09 Javascript
python进程管理工具supervisor使用实例
2014/09/17 Python
如何利用python给图片添加半透明水印
2019/09/06 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
python tqdm库的使用
2020/11/30 Python
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
环境工程专业个人求职信
2013/12/05 职场文书
2014年庆元旦活动方案
2014/02/15 职场文书
高中军训感想800字
2014/02/23 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
公积金贷款承诺书
2015/04/30 职场文书
redis哨兵常用命令和监控示例详解
2021/05/27 Redis