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 onmouseout 解决办法
Jul 17 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
Nov 19 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
Mar 19 Javascript
node.js中的fs.statSync方法使用说明
Dec 16 Javascript
input输入框鼠标焦点提示信息
Mar 17 Javascript
JavaScript整除运算函数ceil和floor的区别分析
Apr 14 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
May 10 Javascript
打造自己的jQuery插件入门教程
Sep 23 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
Jul 27 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
Aug 31 Javascript
Layui数据表格跳转到指定页的实现方法
Sep 05 Javascript
Vue的Options用法说明
Aug 14 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
基于文本的留言簿
2006/10/09 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
20个PHP常用类库小结
2011/09/11 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
JScript分割字符串示例代码
2013/09/04 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
JavaScript动态提示输入框输入字数的方法
2015/07/27 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
浅谈Python处理PDF的方法
2017/11/10 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
python新式类和经典类的区别实例分析
2020/03/23 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
新驾驶员个人自我评价
2014/01/03 职场文书
会计电算化大学生职业规划书
2014/02/05 职场文书
学生个人自我鉴定
2014/03/26 职场文书
大学生求职计划书
2014/04/30 职场文书
英语导游词
2015/02/13 职场文书
2015年电教工作总结
2015/05/26 职场文书
vue首次渲染全过程
2021/04/21 Vue.js