视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
javascript面向对象之二命名空间_js面向对象
2020-11-27 20:58:09 责编:小采
文档

最简单创建命名空间的方法:
代码如下:
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经验总结面向对象—类 结果一样

下载本文
显示全文
专题