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 相关文章推荐
利用XMLHTTP传递参数在另一页面执行并刷新本页
Oct 26 Javascript
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
Mar 16 Javascript
基于jQuery的表格操作插件
Apr 22 Javascript
JavaScript下利用fso判断文件是否存在的代码
Dec 11 Javascript
初识JQuery 实例一(first)
Mar 16 Javascript
jQuery使用$.each遍历json数组的简单实现方法
Apr 18 Javascript
js获取隐藏元素宽高的实现方法
May 19 Javascript
微信小程序实现城市列表选择
Jun 05 Javascript
vue两组件间值传递 $router.push实现方法
May 15 Javascript
Vue组件实现触底判断
Jun 26 Javascript
Element-ui DatePicker显示周数的方法示例
Jul 19 Javascript
Vue打包后访问静态资源路径问题
Nov 08 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
老照片 - 几十年前的收音机与人
2021/03/02 无线电
德劲1102收音机的打理维修案例
2021/03/02 无线电
PHP中基本符号及使用方法
2010/03/23 PHP
PHP编码转换
2012/11/05 PHP
php画图实例
2014/11/05 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
PDO::errorCode讲解
2019/01/28 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
由浅入深剖析Angular表单验证
2016/07/14 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
python生成随机mac地址的方法
2015/03/16 Python
Python 实现使用空值进行赋值 None
2020/03/12 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
Hotels.com南非:酒店预订
2017/11/02 全球购物
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
生物学学生自我评价
2014/01/17 职场文书
写给女朋友的保证书
2015/05/09 职场文书
运动会入场词
2015/07/18 职场文书
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电