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使用技巧精萃[代码非常实用]
Nov 21 Javascript
csdn 论坛技术区平均给分功能
Nov 07 Javascript
jQuery Validation插件remote验证方式的Bug解决
Jul 01 Javascript
基于jQuery实现网页进度显示插件
Mar 04 Javascript
javascript组合使用构造函数模式和原型模式实例
Jun 04 Javascript
jquery广告无缝轮播实例
Jan 05 Javascript
fullpage.js最后一屏滚动方式
Feb 06 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
Apr 08 Javascript
vue实现双向绑定和依赖收集遇到的坑
Nov 29 Javascript
javascript中this的用法实践分析
Jul 29 Javascript
p5.js实现动态图形临摹
Oct 23 Javascript
JS绘图Flot应用图形绘制异常解决方案
Oct 16 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
Yii2.0表关联查询实例分析
2016/07/18 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
JS 获取滚动条高度示例代码
2013/10/24 Javascript
jquery获取一个元素下面相同子元素的个数代码
2014/07/31 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
JS基于VML技术实现的五角星礼花效果代码
2015/10/26 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
vue引入swiper插件的使用实例
2017/07/19 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
详细讲解Python中的文件I/O操作
2015/05/24 Python
Python进程间通信用法实例
2015/06/04 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
Python基础练习之用户登录实现代码分享
2017/11/08 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
python中with用法讲解
2020/02/07 Python
QML用PathView实现轮播图
2020/06/03 Python
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
澳大利亚电子产品购物网站:Dick Smith
2017/02/02 全球购物
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
成功的餐厅经营创业计划书
2014/01/15 职场文书
一位农村小子的自荐信
2014/04/07 职场文书
大学生社会实践方案
2014/05/11 职场文书
优秀大学生自荐信
2014/06/09 职场文书
企业标语大全
2014/07/01 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
歌舞青春观后感
2015/06/10 职场文书
公司晚会主持词
2019/04/17 职场文书