javascript面向对象之二 命名空间


Posted in Javascript onFebruary 08, 2011

最简单创建命名空间的方法:

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中的null和undefined解析
Apr 14 Javascript
JavaScript中判断整数的多种方法总结
Nov 08 Javascript
jquery操作select方法汇总
Feb 05 Javascript
详解JavaScript的另类写法
Apr 11 Javascript
JS仿京东移动端手指拨动切换轮播图效果
Apr 10 Javascript
Vue-cli@3.0 插件系统简析
Sep 05 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
Sep 13 Javascript
基于axios 解决跨域cookie丢失的问题
Sep 26 Javascript
js实现GIF动图分解成多帧图片上传
Oct 24 Javascript
微信公众号服务器验证Token步骤图解
Dec 30 Javascript
小程序表单认证布局及验证详解
Jun 19 Javascript
React自定义hook的方法
Jun 25 Javascript
javascript中的对象创建 实例附注释
Feb 08 #Javascript
kmock javascript 单元测试代码
Feb 06 #Javascript
一次失败的jQuery优化尝试小结
Feb 06 #Javascript
DOM_window对象属性之--clipboardData对象操作代码
Feb 03 #Javascript
基于jQuery的自动完成插件
Feb 03 #Javascript
jQuery初学:find()方法及children方法的区别分析
Jan 31 #Javascript
javascript event 事件解析
Jan 31 #Javascript
You might like
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
按下回车键指向下一个位置的一个函数代码
2014/03/10 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
2017/08/03 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
2018/08/27 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Pandas中resample方法详解
2019/07/02 Python
Python面向对象封装操作案例详解
2019/12/31 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
2020/07/02 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
招聘与培训专员岗位职责
2014/01/30 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle