在当前的ECMAScript标准中,并没有命名空间这个概念,但是有时候在写类库的时候,命名空间这种代码组织形式又显得相当重要,因为它可以有效的组织代码,并且无需定义不必要的全局函数或者变量,下面就通过代码实例介绍一下如何在javascript模拟实现命名空间功能,先看一段代码实例:
   [ 其他 ] 运行代码    下载代码
<script>
var nameSpace = {};
nameSpace.info = {};
nameSpace.info.Antzone = function(name) {
  //私有成员
  var _name = name;
  //访问器
  this.getName = function() {
    return _name;
  };
  this.setName = function(name) {
    _name = name;
  };
};
//原型
nameSpace.info.Antzone.prototype = {
  done:function() {
    console.log(this.getName()+"分享互助");
  }
};
var antzone=new nameSpace.info.Antzone("51前端");
antzone.done();
<、script>
以上代码就是模拟c#或者java中的命名空间效果。从代码中可以可以体会出命名空间的功效,这样可以有效的避免一些全局性变量的或者函数的重名等等其他副作用,组织代码也更为遍历,也便于多库共存。

补充说明:

上面的代码模拟实现命名空间功效,但是还是不够完美,因为这个命名空间的引用实在太冗长了,那么我们可以给他取一个别名,这样更为方便一些,代码如下:
   [ 其他 ] 运行代码    下载代码
<script>
var ns=nameSpace.info;
var antzone=new ns.Antzone("51前端");
antzone.done();
</script>
以上代码是不是看起更为简洁一些,在引用相关内容的时候可以节省一些体力。

判断命名空间是否存在:

如果当前js代码非常庞大的时候,可能会出现命名空间重复的情况,这往往并不是我们愿意看到的,所以最好事先判断一下指定的命名空间是否存在,代码如下:
   [ 其他 ] 运行代码    下载代码
<script>
if(!nameSpace){
  var nameSpace={};
  nameSpace.info={}
}
else{
  if(!nameSpace.info){
    nameSpace.info={}
  }
}
</script>

代码描述:javascript命名空间。javascript命名空间实例代码



127 169



用户评论
大牛,别默默的看了,快登录帮我点评一下吧!:)      登录 | 注册



×
×
51前端

注册

×
绑定手机

请绑定手机号,在继续操作

×
单次下载支付

应付金额:279

支付完成后,回到下载页面,在进行下载

官方QQ群
意见反馈
qq群

扫描上面二维码加微信群

官方QQ群

jQuery/js讨论群
群号:642649996
Css3+Html5讨论群
群号:322131262

加群请备注:从官网了解到