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 相关文章推荐
基于jquery实现后台左侧菜单点击上下滑动显示
Apr 11 Javascript
iScroll.js 使用方法参考
May 16 Javascript
JS实现输入框提示文字点击时消失效果
Jul 19 Javascript
js数组与字符串常用方法总结
Jan 13 Javascript
jQuery Ajax全解析
Feb 13 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
Feb 20 Javascript
jQuery实现简单日期格式化功能示例
Sep 19 jQuery
AngularJS实现的select二级联动下拉菜单功能示例
Oct 25 Javascript
简单的React SSR服务器渲染实现
Dec 11 Javascript
vue实现axios图片上传功能
Aug 20 Javascript
Vue 实现从小到大的横向滑动效果详解
Oct 16 Javascript
在vue中给后台接口传的值为数组的格式代码
Nov 12 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
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
利用JavaScript检测CPU使用率自己写的
2014/03/22 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
JavaScript类数组对象转换为数组对象的方法实例分析
2018/07/24 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
Vue函数式组件-你值得拥有
2019/05/09 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
python中argparse模块用法实例详解
2015/06/03 Python
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
python连接数据库的方法
2017/10/19 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
Java面试笔试题大全
2016/11/23 面试题
成人毕业生自我鉴定
2013/10/18 职场文书
大学英语专业求职信
2014/06/21 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL