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侧边栏随窗口滚动实现方法
Mar 04 Javascript
jquery实现文字由下到上循环滚动的实例代码
Aug 09 Javascript
JavaScript创建对象的写法
Aug 29 Javascript
js实现的点击div区域外隐藏div区域
Jun 30 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
Aug 15 Javascript
引用jquery框架后出错的解决方法
Aug 09 Javascript
jQuery基于ajax操作json数据简单示例
Jan 05 Javascript
浅谈Vuex的状态管理(全家桶)
Nov 04 Javascript
NProgress显示顶部进度条效果及使用详解
Sep 21 Javascript
js实现简单掷骰子小游戏
Oct 24 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
Mar 08 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
Sep 22 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 引用文件技巧
2010/03/02 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
ThinkPHP之import方法实例详解
2014/06/20 PHP
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
PHP抓取及分析网页的方法详解
2016/04/26 PHP
PHP对象、模式与实践之高级特性分析
2016/12/08 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
Javascript 基础---Ajax入门必看
2016/07/06 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
英国在线泳装店:Simply Swim
2019/05/05 全球购物
介绍一下linux的文件权限
2012/02/15 面试题
乡镇挂职心得体会
2014/09/04 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
教师党员整改措施
2014/10/24 职场文书
2015年服务员工作总结
2015/04/08 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书
水浒传读书笔记
2015/06/25 职场文书
Python中的min及返回最小值索引的操作
2021/05/10 Python