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获取div宽度的实现思路与代码
Jan 13 Javascript
jQuery之按钮组件的深入解析
Jun 19 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
Mar 11 Javascript
jQuery实现带有洗牌效果的动画分页实例
Aug 31 Javascript
谈谈target=_new和_blank的不同之处
Oct 25 Javascript
Angular.js跨controller实现参数传递的两种方法
Feb 20 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
Oct 26 Javascript
详解js跨域请求的两种方式,支持post请求
May 05 Javascript
基于bootstrap页面渲染的问题解决方法
Aug 09 Javascript
JS实现的新闻列表自动滚动效果示例
Jan 30 Javascript
javascript原型链学习记录之继承实现方式分析
May 01 Javascript
Vue中nprogress页面加载进度条的方法实现
Nov 13 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快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
PHP的password_hash()使用实例
2014/03/17 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
php实现记事本案例
2020/10/20 PHP
PHP7 其他修改
2021/03/09 PHP
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
AngularJS directive返回对象属性详解
2016/03/28 Javascript
Immutable 在 JavaScript 中的应用
2016/05/02 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
python实现封装得到virustotal扫描结果
2014/10/05 Python
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
python根据出生日期返回年龄的方法
2015/03/26 Python
用Python的线程来解决生产者消费问题的示例
2015/04/02 Python
Python with用法实例
2015/04/14 Python
python删除过期log文件操作实例解析
2018/01/31 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
活动总结报告格式
2014/05/09 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
2014年行政部工作总结
2014/11/19 职场文书
实习介绍信范文
2015/05/05 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL
处理canvas绘制图片模糊问题
2022/05/11 Javascript