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 相关文章推荐
javascript+css 网页每次加载不同样式的实现方法
Dec 27 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
Apr 14 Javascript
javascript简单实现类似QQ头像弹出效果的方法
Aug 03 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
Jan 15 Javascript
js制作可以延时消失的菜单
Jan 13 Javascript
JavaScript函数参数的传递方式详解
Mar 06 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
Nov 28 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
Dec 09 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
Jul 17 Javascript
vue 实现根据data中的属性值来设置不同的样式
Aug 04 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
Oct 24 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
Oct 31 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安全配置 如何配置使其更安全
2011/12/16 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
原生js实现可爱糖果数字时间特效
2016/12/30 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
Python Web编程之WSGI协议简介
2018/07/18 Python
python遍历小写英文字母的方法
2019/01/02 Python
Django 解决由save方法引发的错误
2020/05/21 Python
python中线程和进程有何区别
2020/06/17 Python
Django实现内容缓存实例方法
2020/06/30 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
中文专业毕业生自荐信
2013/10/28 职场文书
超市营业员岗位职责
2013/12/20 职场文书
财务部经理岗位职责
2014/02/03 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
感动中国何玥观后感
2015/06/02 职场文书
公司备用金管理制度
2015/08/04 职场文书
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫
springboot读取nacos配置文件
2022/05/20 Java/Android
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers