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的Ajax时无响应数据的解决方法
May 25 Javascript
js对象的比较
Feb 26 Javascript
css配合jquery美化 select
Nov 29 Javascript
jquery实现图片左右切换的方法
May 07 Javascript
简介JavaScript中Math.LOG10E属性的使用
Jun 14 Javascript
javascript简单实现类似QQ头像弹出效果的方法
Aug 03 Javascript
javascript中类的定义方式详解(四种方式)
Dec 22 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
Jun 14 Javascript
JS实现的简单拖拽功能示例
Mar 13 Javascript
vue绑定的点击事件阻止冒泡的实例
Feb 08 Javascript
vue实例中data使用return包裹的方法
Aug 27 Javascript
vue-cli3 从搭建到优化的详细步骤
Jan 20 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伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
JavaScript模拟push
2016/03/06 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
JavaScript实现垂直向上无缝滚动特效代码
2016/11/23 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
Bootstrap输入框组件使用详解
2017/06/09 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
浅谈在node.js进入文件目录的问题
2018/05/13 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
python PyTorch预训练示例
2018/02/11 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
Python如何使用input函数获取输入
2020/08/06 Python
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
公司综合部的成员自我评价分享
2013/11/05 职场文书
安全承诺书格式范本
2015/04/28 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
小学远程教育工作总结
2015/08/13 职场文书
2016年员工年度考核评语
2015/12/02 职场文书
公司年会晚会开幕词
2019/04/02 职场文书
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
MySQL约束超详解
2021/09/04 MySQL