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 Ajax之load()方法
Oct 12 Javascript
js切换div css注意的细节
Dec 10 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
Apr 29 Javascript
js 获取元素所有兄弟节点的实现方法
Sep 06 Javascript
微信小程序 scroll-view隐藏滚动条详解
Jan 16 Javascript
javascript 面向对象实战思想分享
Sep 07 Javascript
红黑树的插入详解及Javascript实现方法示例
Mar 26 Javascript
基于JavaScript实现一个简单的Vue
Sep 26 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
Sep 06 Javascript
vue视频播放暂停代码
Nov 08 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
Mar 12 Javascript
vue实现登陆页面开发实践
May 30 Vue.js
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
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
php实现加减法验证码代码
2014/02/14 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
jQuery页面弹出框实现文件上传
2017/02/09 Javascript
angularJs的ng-class切换class
2017/06/23 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
微信小程序如何实现点击图片放大功能
2020/01/21 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
python 类详解及简单实例
2017/03/24 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
PyChon中关于Jekins的详细安装(推荐)
2020/12/28 Python
茵宝(Umbro)英国官方商店:英国足球服装生产商
2016/12/29 全球购物
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
工厂仓库管理员岗位职责
2015/04/09 职场文书
前台岗位职责范本
2015/04/16 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python