JavaScript 面向对象之命名空间


Posted in Javascript onMay 04, 2010

在小项目中对于JavaScript使用,只要写几个function就行了。但在大型项目中,尤其是在开发追求良好的用户体验的网站中,如SNS,就会用到大量的JavaScrpt,有时JavaScript的工作量胜过了C#,这时写一堆function,就会显得很乱,杂乱无章,甚至会出现命名冲突,管理和维护起来都很麻烦。对于这种情况我们就需要使用面向对象的思想来开发JavaScript。那我们就这样作罢:

 对于一个项目,首先要有个命名空间。所以我们首先要做的是定义一个函数来注册命名空间。代码如下:

// 声明一个全局对象RegisterNameSpace函数,参数为名称空间全路径,如"cnblogs.blog" 
RegisterNameSpace = function(fullName) { 
// 将命名空间切成N部分 
var nsArray = fullName.split('.'); 
var strEval = ""; 
var strNS = ""; 
for (var i = 0; i < nsArray.length; i++) { 
if (i != 0){ 
strNS += "."; 
} 
strNS += nsArray[i]; 
// 依次创建构造命名空间对象(假如不存在的话)的语句 
strEval += "if (typeof(" + strNS + ") == 'undefined') " + strNS + " = new Object();" 
} 
if (strEval != "") eval(strEval); 
}

好了,现在来注册几个命名空间试试,就已博客园为例吧,博客园有几个模块“博客”、“新闻”、“小组”......
RegisterNameSpace("cnblogs.blog"); 
RegisterNameSpace("cnblogs.news"); 
RegisterNameSpace("cnblogs.group");

事实上,这里的命名空间就是一个对象,一个Object。
作者: cnblogs 祥叔
Javascript 相关文章推荐
JavaScript 动态添加表格行 使用模板、标记
Oct 24 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
Oct 11 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
Nov 19 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
Feb 23 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
Nov 06 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
Sep 27 Javascript
最常见和最有用的字符串相关的方法详解
Feb 06 Javascript
微信小程序之绑定点击事件实例详解
Jul 07 Javascript
vue实现表格增删改查效果的实例代码
Jul 18 Javascript
Vue v2.5 调整和更新不完全问题
Oct 24 Javascript
JavaScript基础心法 数据类型
Mar 05 Javascript
vue中使用props传值的方法
May 08 Javascript
10个实用的脚本代码工具
May 04 #Javascript
利用location.hash实现跨域iframe自适应
May 04 #Javascript
Array.prototype 的泛型应用分析
Apr 30 #Javascript
jQuery 锚点跳转滚动条平滑滚动一句话代码
Apr 30 #Javascript
JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解
Apr 29 #Javascript
匹配任意字符的正则表达式写法
Apr 29 #Javascript
jquery ajax提交表单数据的两种实现方法
Apr 29 #Javascript
You might like
PHP中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
JavaScript之自定义类型
2012/05/04 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
angular 实现下拉列表组件的示例代码
2019/03/09 Javascript
Javascript通过控制类名更改样式
2019/05/24 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
python静态方法实例
2015/01/14 Python
python实现telnet客户端的方法
2015/04/15 Python
Python中单、双下划线的区别总结
2017/12/01 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
python里反向传播算法详解
2020/11/22 Python
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
北京振戎融通Java面试题
2015/09/03 面试题
毕业生求职自荐信怎么写
2014/01/08 职场文书
建筑总经理岗位职责
2014/02/02 职场文书
区优秀教师事迹材料
2014/02/10 职场文书
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
张思德观后感
2015/06/09 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
python turtle绘图
2022/05/04 Python