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 相关文章推荐
javascript动态加载二
Aug 22 Javascript
jQuery中delegate与on的用法与区别示例介绍
Dec 20 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
Aug 01 Javascript
jQuery中ScrollTo用法示例
Sep 04 Javascript
简单理解Vue条件渲染
Dec 03 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
Dec 13 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
Nov 24 Javascript
echarts多条折线图动态分层的实现方法
May 24 Javascript
layer.open回调获取弹出层参数的实现方法
Sep 10 Javascript
es6中reduce的基本使用方法
Sep 10 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
Sep 12 Javascript
javascript实现电商放大镜效果
Nov 23 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使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
有趣的bootstrap走动进度条
2016/12/01 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
python实现redis三种cas事务操作
2017/12/19 Python
python实现事件驱动
2018/11/21 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
Python中的集合介绍
2019/01/28 Python
python交互界面的退出方法
2019/02/16 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
优秀毕业生求职信范文
2014/01/02 职场文书
学雷锋演讲稿汇总
2014/05/10 职场文书
体育专业自荐书
2014/05/29 职场文书
优秀党员推荐材料
2014/12/18 职场文书
六五普法学习心得体会
2016/01/21 职场文书
高中物理教学反思
2016/02/19 职场文书