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 相关文章推荐
Extjs学习笔记之六 面版
Jan 08 Javascript
制作高质量的JQuery Plugin 插件的方法
Apr 20 Javascript
javascript 文本框水印/占位符(watermark/placeholder)实现方法
Jan 15 Javascript
浅谈javascript面向对象程序设计
Jan 21 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
Jul 01 Javascript
JS实现六位字符密码输入器功能
Aug 19 Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
Javascript迭代、递推、穷举、递归常用算法实例讲解
Feb 01 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
Jan 08 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
Feb 27 Javascript
JavaScript前端实现压缩图片功能
Mar 06 Javascript
vue实现div单选多选功能
Jul 16 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
xml+php动态载入与分页
2006/10/09 PHP
php discuz 主题表和回帖表的设计
2009/03/13 PHP
php HandlerSocket的使用
2011/05/02 PHP
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
js改变鼠标的形状和样式的方法
2014/03/31 Javascript
对new functionName()定义一个函数的理解
2014/05/22 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
javascript 注释代码的几种方法总结
2017/01/04 Javascript
AngularJS监听路由变化的方法
2017/03/07 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
node express使用HTML模板的方法示例
2019/08/22 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
[04:29]【TI9采访】OG.N0tail在胜者组决赛后接受采访
2019/08/25 DOTA
详解Python的Lambda函数与排序
2016/10/25 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
Atom的python插件和常用插件说明
2018/07/08 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
Django集成搜索引擎Elasticserach的方法示例
2019/06/04 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
使用python获取邮箱邮件的设置方法
2019/09/20 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
过滤器的用法
2013/10/08 面试题
电子商务专业个人的自我评价
2013/11/19 职场文书
购房协议书
2014/04/11 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
学校督导评估方案
2014/06/10 职场文书
民用住房租房协议书
2014/10/29 职场文书
2014年老干部工作总结
2014/11/21 职场文书
学校教学工作总结2015
2015/05/19 职场文书
蜗居观后感
2015/06/11 职场文书
《藏戏》教学反思
2016/02/23 职场文书
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers