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 相关文章推荐
My Desktop :) 桌面式代码
Dec 29 Javascript
Cookie 注入是怎样产生的
Apr 08 Javascript
javascript 强制刷新页面的实现代码
Dec 13 Javascript
flash遮住div问题的正确解决方法
Feb 27 Javascript
js实现拉幕效果的广告代码
Sep 02 Javascript
Backbone中View之间传值的学习心得
Aug 09 Javascript
BootStrap网页中代码显示用法详解
Oct 21 Javascript
微信小程序(应用号)开发新闻客户端实例
Oct 24 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
Jul 27 Javascript
Vue CLI3 如何支持less的方法示例
Aug 29 Javascript
angular ng-model 无法获取值的处理方法
Oct 02 Javascript
解决vue项目,npm run build后,报路径错的问题
Aug 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
水质对咖图啡风味的影响具体有哪些
2021/03/03 冲泡冲煮
php中实现记住密码自动登录的代码
2011/03/02 PHP
php 网上商城促销设计实例代码
2012/02/17 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
基于php编程规范(详解)
2017/08/17 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
JavaScript 10件让人费解的事情
2010/02/15 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
javascript trie前缀树的示例
2018/01/29 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
JS中实现一个下载进度条及播放进度条的代码
2019/06/10 Javascript
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
什么是GWT的Module
2013/01/20 面试题
公司合作意向书范文
2014/07/30 职场文书
运动会演讲稿100字
2014/08/25 职场文书
元旦晚会开场白
2015/05/29 职场文书
高中美术教学反思
2016/02/17 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
python使用torch随机初始化参数
2022/03/22 Python