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技巧总结
Jan 01 Javascript
事件绑定之小测试  onclick &amp;&amp; addEventListener
Jul 31 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
Jul 05 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
Mar 18 Javascript
javascript中字符串拼接详解
Sep 26 Javascript
JS实现模拟风力的雪花飘落效果
May 13 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
Mar 23 Javascript
vue项目中跳转到外部链接的实例讲解
Sep 20 Javascript
JavaScript中的一些实用小技巧总结
Apr 07 Javascript
javascript canvas API内容整理
Feb 16 Javascript
详解CocosCreator消息分发机制
Apr 16 Javascript
JavaScript 防篡改对象的用法示例
Apr 24 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利用curl抓取新浪微博内容示例
2014/04/27 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
实例说明为什么不要行内使用javascript
2014/04/18 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
2014/12/16 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
2015/11/30 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
tensorflow实现KNN识别MNIST
2018/03/12 Python
在python中实现对list求和及求积
2018/11/14 Python
python xpath获取页面注释的方法
2019/01/14 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
Python3爬虫中关于中文分词的详解
2020/07/29 Python
Python实现上下文管理器的方法
2020/08/07 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
英国假发网站:Hothair
2018/02/23 全球购物
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
大专生自我评价
2014/01/28 职场文书
新年主持词
2014/03/27 职场文书
青安岗事迹材料
2014/05/14 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
使用nginx配置访问wgcloud的方法
2021/06/26 Servers