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 多级checkbox选择效果
Aug 20 Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
Jul 11 Javascript
javascript针对DOM的应用实例(一)
Apr 15 Javascript
jquery插件制作教程 txtHover
Aug 17 Javascript
js实现网站首页图片滚动显示
Feb 04 Javascript
了解Javascript的模块化开发
Mar 02 Javascript
jquery获取复选框checkbox的值的简单实现方法
May 26 Javascript
最全面的JS倒计时代码
Sep 17 Javascript
Jquery on绑定的事件 触发多次实例代码
Dec 08 Javascript
JS 实现随机验证码功能
Feb 15 Javascript
微信小程序 上传头像的实例详解
Oct 27 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
Sep 19 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作的文本留言本的例子(六)
2006/10/09 PHP
PHP 一个页面执行时间类代码
2010/03/05 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
网页自动跳转代码收集
2009/09/27 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
Javascript操作cookie的函数代码
2012/10/03 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
删除javascript所创建子节点的方法
2015/05/21 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
electron中使用bootstrap的示例代码
2018/11/06 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
Python+PIL实现支付宝AR红包
2018/02/09 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
2018/04/05 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
python实现简易动态时钟
2018/11/19 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
英国乡村时尚和宠物用品专家:Pet & Country
2018/07/02 全球购物
波兰珠宝品牌:YES
2019/08/09 全球购物
造型师求职自荐信
2013/09/27 职场文书
大学生饮食配送创业计划书
2014/01/04 职场文书
《手指教学》反思
2014/02/14 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
2015年副班长工作总结
2015/05/15 职场文书
纪检部部长竞选稿
2015/11/21 职场文书