码迷,mamicode.com
首页 > Web开发 > 详细

如何让js不产生冲突,避免全局变量的泛滥,合理运用命名空间

时间:2014-06-14 17:41:07      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:js   全局变量   命名空间   

为了避免变量之间的覆盖与冲突,可以生成命名空间,命名空间是一种特殊的前缀,在js中,通过{ }对象实现。

在不同的匿名函数中,根据功能声明一个不同的命名空间,每个匿名函数中GLOBAL对象的属性都不直接挂在GLOBAL上,而是挂在次匿名函数的命名空间下,如:

<script type="text/javascript">
   var GLOBAL={}
</script>
<script type="text/javascript">
   (function(){
      var a=123, a1=256;
      GLOBAL.A={}
      GLOBAL.A.str=a;
   })();
</script>

<script type="text/javascript">
   (function(){
      var b1=123, b2=256;
      GLOBAL.B={}
      GLOBAL.B.str=a;
   })();
</script>

 

如果同一个匿名函数中的程序非常复杂,变量名很多,命名空间可以进一步扩展,生成二级命名空间:

<script type="text/javascript">
    var GLOBAL={}
</script>
<script type="text/javascript">
   (function(){
      var a=123, a1=256;
      GLOBAL.A={};
      GLOBAL.A.CAT={};
      GLOBAL.A.DOG={};
      GLOBAL.A.CAT.name="mini";
      GLOBAL.A.CAT.move=function(){
      }
      GLOBAL.A.DOG.name="mini";
      GLOBAL.A.DOG.move=function(){
      }
   })();
</script>


因生成命名空间是非常常用的功能,可以进一步将生成命名空间的功能定义成一个函数,方便调用,如下:

<script type="text/javascript">
   var GLOBAL={}
   GLOBAL.namespace=function(str){
      var arr=str.split("."), o=GLOBAL;
            for(i=arr[0]=="GLOBAL"?1:0;i<arr.length; i++){
      o[arr[i]]=o[arr[i]] || {};
      o=o[arr[i]];
      }
   }
</script>


 

调用命名空间具体操作:

<script type="text/javascript">
//=============================================================
//     功能A
//     工程师甲
//     email:ctkl68945@gmail.com     msn:ctkl68945@hotmail.com"
//     2012-11-06
//=============================================================
 
(function(){
   var a=123, a1="hello world";
   GLOBAL.namespace("A.CAT");
   GLOBAL.namespace("A.DOG");
   GLOBAL.A.CAT.name="mini";
   GLOBAL.A.CAT.move=function(){
   }
   GLOBAL.A.DOG.name="mini";
   GLOBAL.A.DOG.move=function(){
   }
   GLOBAL.A.str=a;
   GLOBAL.A.str1=a1;
})();

 

依次类似,无论多人的直接团队开发,还是个人的间接团队合作,都需要良好的可维护性。

1、添加必要的代码注释

2、让JS不产生冲突,需避免全局变量的泛滥,合理使用命名空间

 

 

如何让js不产生冲突,避免全局变量的泛滥,合理运用命名空间,布布扣,bubuko.com

如何让js不产生冲突,避免全局变量的泛滥,合理运用命名空间

标签:js   全局变量   命名空间   

原文地址:http://blog.csdn.net/comeonstone/article/details/30465399

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!