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 相关文章推荐
动态修改DOM 里面的 id 属性的弊端分析
Sep 03 Javascript
jquery ajax abort()的使用方法
Oct 28 Javascript
JS常用字符串处理方法应用总结
May 22 Javascript
jquery css 设置table的奇偶行背景色示例
Jun 03 Javascript
jQuery实现ichat在线客服插件
Dec 29 Javascript
jQuery 跨域访问解决原理案例详解
Jul 09 Javascript
基于vue 开发中出现警告问题去除方法
Jan 25 Javascript
vue中本地静态图片路径写法
Mar 06 Javascript
JavaScript 判断对象中是否有某属性的常用方法
Jun 14 Javascript
微信小程序实现订单倒计时
Nov 01 Javascript
js贪心算法 钱币找零问题代码实例
Sep 11 Javascript
js实现页面图片消除效果
Mar 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 ftp文件上传函数(基础版)
2010/06/03 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
js 判断上传文件大小及格式代码
2013/11/13 Javascript
js电话号码验证方法
2015/09/28 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
如何选择适合你的JavaScript框架
2017/11/20 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
Python基于回溯法子集树模板解决选排问题示例
2017/09/07 Python
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
PyCharm中代码字体大小调整方法
2019/07/29 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
python redis存入字典序列化存储教程
2020/07/16 Python
浅谈Python描述数据结构之KMP篇
2020/09/06 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
FC-Moto瑞典:欧洲最大的摩托车服装和头盔商店之一
2018/11/27 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
会展中心部门工作职责
2013/11/27 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
开学第一周总结
2015/07/16 职场文书
中秋节随笔
2015/08/15 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL