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实现下拉框左右移动(全部移动,已选移动)
Apr 15 Javascript
NODE.JS跨域问题的完美解决方案
Oct 20 Javascript
jQuery模拟下拉框选择对应菜单的内容
Mar 07 Javascript
vue实现todolist单页面应用
Apr 11 Javascript
JAVA中截取字符串substring用法详解
Apr 14 Javascript
es6学习笔记之Async函数基本教程
May 11 Javascript
Angular通过angular-cli来搭建web前端项目的方法
Jul 27 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
Oct 11 Javascript
JS实现返回上一页并刷新页面的方法分析
Jul 16 Javascript
javaScript中indexOf用法技巧
Nov 26 Javascript
Openlayers学习之加载鹰眼控件
Sep 28 Javascript
JavaScript控制台的更多功能
Apr 28 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
附件名前加网站名
2008/03/23 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
php接口和抽象类使用示例详解
2014/03/02 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
预加载css或javascript的js代码
2010/04/23 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
2013/05/28 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
扬尘污染防治方案
2014/06/15 职场文书
解除劳动合同协议书(样本)
2014/10/02 职场文书
捐资助学感谢信
2015/01/21 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
村主任当选感言
2015/08/01 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python
Python中使用ipython的详细教程
2021/06/22 Python
python使用shell脚本创建kafka连接器
2022/04/29 Python
Python四款GUI图形界面库介绍
2022/06/05 Python