Javascript 面向对象 命名空间


Posted in Javascript onMay 13, 2010

javascript中本没有命名空间的概念,但是要体现面向对象的思想,

应当有命名空间,就像java中的package,.net中的namespace一样,

作用主要为了防止类名冲突,相同的类名只要属于不同的命名空间,便不会冲突。
最简单创建命名空间的方法:

var java = {}; 
java.util = {}; 
//这样就创建成功了命名空间:java.util 
//我们可以在java.util下面加类(函数),属性,或对象 
java.util.HashMap = function() 
{ 
this.ShowMessage = function() 
{ 
alert("java.util.HashMap"); 
} 
} 
var map = new java.util.HashMap(); 
alert(map.ShowMessage()); //显示结果:java.util.HashMap 
//封装创建命名空间的方法: 
//定义一个对象,js中用{}花括号定义对象,等同于 var JsObject = new Object(); 
var JsObject = {}; 
JsObject.namespace = function() //在JsObject对象下定义一个函数namespace 
{ 
 /*下面代码中arguments为函数传入的参数,在function未明确定义参数时, 

function也可以传入参数,并用arguments来 接收,arguments类似数组, 

如果传入多个参数,将按顺序保存,取值法:arguments[0],arguments[1]....*/ 
var a = arguments,o = null,d,rt; 
for(var i = 0; i < a.length; i++) 
{ 
d = a[i].split('.'); //将传入的参数用符号'.' 进行分割,并放入d数组中。 
rt = d[0]; 
//判断数组中的第一个值是否未定义,如果未定义,便定义为空对象{},并赋值给变量o 
eval('if (typeof ' + rt + ' == "undefined"){' 



+ rt + ' = {};} o = ' + rt + ';'); 

for(var j = 1; j < d.length; j++) 

{ 


/*循环遍历数组d每个值作为key,加入到对象o中,如果key在o中存在,则取o中值,若 


不存在,则赋值为空对象{} */ 
 


o[d[j]] = o[d[j]] || {}; 

  o = o[d[j]]; 

} 
} 
} 
JsObject.namespace("org.myJs"); //申明命名空间:org.myJs 
org.myJs.Student = function() //在命名空间org.myJs下定义类Student 
{ 


//定义类Student中的变量,并赋予初值,但此变量的访问权限是public 
this.studentNo = 's001'; 
this.studentName = '小明'; 
this.sex = '男'; 
} 
var s = new org.myJs.Student(); //创建Student类的对象 
alert('学号:'+s.studentNo); 
alert('姓名:'+s.studentName); 
alert('性别:'+s.sex);

效果和第一篇 (一)javascript经验总结面向对象—类 结果一样
Javascript 相关文章推荐
jQuery 加上最后自己的验证
Nov 04 Javascript
JavaScript模板入门介绍
Sep 26 Javascript
javascript面向对象之访问对象属性的两种方式分析
Jan 13 Javascript
超实用的JavaScript表单代码段
Feb 26 Javascript
angular中的cookie读写方法
Aug 02 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
Mar 23 jQuery
webpack4之SplitChunksPlugin使用指南
Jun 12 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
Nov 15 Javascript
使用webpack将ES6转化ES5的实现方法
Oct 13 Javascript
微信小程序商品详情页底部弹出框
Nov 22 Javascript
如何基于js判断浏览器版本
Feb 20 Javascript
JS实现简单控制视频播放倍速的实例代码
Apr 18 Javascript
javascript 面向对象 function类
May 13 #Javascript
该如何加载google-analytics(或其他第三方)的JS
May 13 #Javascript
Javascript 面向对象 继承
May 13 #Javascript
Javascript 面向对象 重载
May 13 #Javascript
JavaScript 面向对象的 私有成员和公开成员
May 13 #Javascript
限制文本框输入N个字符的js代码
May 13 #Javascript
javascript preload&amp;lazy load
May 13 #Javascript
You might like
php编程每天必学之验证码
2016/03/03 PHP
PHP APP微信提现接口代码
2018/09/30 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
jQuery实现简单二级下拉菜单
2015/04/12 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
2017/01/13 Javascript
COM组件中调用JavaScript函数详解及实例
2017/02/23 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
python标准日志模块logging的使用方法
2013/11/01 Python
在类Unix系统上开始Python3编程入门
2015/08/20 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
python实现按行分割文件
2019/07/22 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
HTML5实现经典坦克大战坦克乱走还能发出一个子弹
2013/09/02 HTML / CSS
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
武汉高蓝德国际.net机试
2016/06/24 面试题
研究生毕业自我鉴定范文
2014/03/27 职场文书
2014年冬季防火方案
2014/05/21 职场文书
离婚协议书范本样本
2014/08/19 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书
php修改word的实例方法
2021/11/17 PHP
python字符串的一些常见实用操作
2022/04/06 Python