Javascript 面向对象 命名空间


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经验总结面向对象—类 结果一样



相关阅读:
Mysql如何避免全表扫描的方法
基于jquery的jqDnR拖拽溢出的修改
QQ For Linux 1.0 Preview 抢先测评
SQL Server数据库的锁类型总结
Panel加样式有时候无法浮动的问题
十天学会php之第六天
asp.net下日期加减的方法
mysql千万级数据大表该如何优化?
jquery ui dialog ie8出现滚动条的解决方法
Whats new in Microsoft SQL Server 2000(七)
Windows 2003安全指南之强化IIS服务器二
iframe 的刷新方式 这样方式更方便
认识浏览器:Netscape 浏览器
Javascript & DHTML 实例编程(教程)DOM基础和基本API
快速导航

Copyright © 2016 phpStudy |