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的实现回车键Enter切换焦点
Sep 14 Javascript
一个JQuery操作Table的代码分享
Mar 30 Javascript
js取消单选按钮选中并判断对象是否为空
Nov 14 Javascript
node.js中的http.response.writeHead方法使用说明
Dec 14 Javascript
javascript中checkbox使用方法简单实例演示
Nov 17 Javascript
jQuery插件编写步骤详解
Jun 03 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
Jun 12 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
Aug 25 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
Oct 27 Javascript
纯js实现隔行变色效果
Nov 29 Javascript
js+springMVC 提交数组数据到后台的实例
Sep 21 Javascript
jQuery 选择方法及$(this)用法实例分析
May 19 jQuery
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新手上路(十一)
2006/10/09 PHP
PHP 中dirname(_file_)讲解
2007/03/18 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
2014/06/07 Javascript
javascript实现一个简单的弹出窗
2016/02/22 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
如何开发出更好的JavaScript模块
2017/12/22 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
JS实现星星海特效
2019/12/24 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
[01:06:07]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS CIS
2014/05/22 DOTA
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
2019/08/27 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
工程预算与管理应届生求职信
2013/10/06 职场文书
测绘工程本科生求职信
2013/10/10 职场文书
小学评语大全
2014/04/22 职场文书
捐款活动总结
2014/08/27 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
2021/09/25 Java/Android
MySQL常用慢查询分析工具详解
2022/08/14 MySQL