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的datepicker的本地化以及Today问题
May 23 Javascript
JavaScript获取路径设计源码
May 22 Javascript
JavaScript提高性能知识点汇总
Jan 15 Javascript
jQuery Ajax页面局部加载方法汇总
Jun 02 Javascript
jQuery1.9+中删除了live以后的替代方法
Jun 17 Javascript
聊一聊JS中this的指向问题
Jun 17 Javascript
JQuery 封装 Ajax 常用方法(推荐)
May 21 jQuery
简单谈谈axios中的get,post方法
Jun 25 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
Sep 14 Javascript
详解js删除数组中的指定元素
Oct 31 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
Jun 03 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
Jul 20 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中动态显示签名和ip原理
2007/03/28 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
php简单获取复选框值的方法
2016/05/11 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
js停止输出代码
2008/07/20 Javascript
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
JavaScript 快捷键设置实现代码
2009/03/13 Javascript
javascript之AJAX框架使用说明
2010/04/24 Javascript
Jquery 点击按钮显示和隐藏层的代码
2011/07/25 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
如何利用python web框架做文件流下载的实现示例
2020/06/02 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
阿联酋团购网站:Groupon阿联酋
2016/10/14 全球购物
介绍一下except的用法和作用
2015/01/22 面试题
经销商会议欢迎词
2014/01/11 职场文书
小学领导班子对照材料
2014/08/23 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
TV动画《神废柴☆偶像》公布先导PV
2022/03/20 日漫
python中的getter与setter你了解吗
2022/03/24 Python