如何让js不产生冲突,避免全局变量的泛滥

转至 http://itindex.net/detail/50000-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>


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

<pre class="html" name="code"><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不产生冲突,需避免全局变量的泛滥,合理使用命名空间

好开会好看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值