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 相关文章推荐
使用JQuery和s3captche实现一个水果名字的验证
Aug 14 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
Dec 04 Javascript
js实现简单的验证码
Dec 25 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
Sep 20 Javascript
JS实现中国公民身份证号码有效性验证
Feb 20 Javascript
微信小程序 检查接口状态实例详解
Jun 23 Javascript
关于Vue实现组件信息的缓存问题
Aug 23 Javascript
浅谈React Native Flexbox布局(小结)
Jan 08 Javascript
vue2.0 资源文件assets和static的区别详解
Apr 08 Javascript
微信小程序自定义弹窗wcPop插件
Nov 19 Javascript
Jquery使用each函数实现遍历及数组处理
Jul 14 jQuery
JS highcharts动态柱状图原理及实现
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
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
2017/01/11 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
wxPython实现带颜色的进度条
2019/11/19 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
生产主管岗位职责
2013/11/10 职场文书
八一慰问活动方案
2014/02/07 职场文书
一帮一活动总结
2014/05/08 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
电工生产实习心得体会
2016/01/22 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书
话题作文之财富(600字)
2019/12/03 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers
vue实力踩坑之push当前页无效
2022/04/10 Vue.js
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL