怎样让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
//     project师甲
//     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不产生冲突。需避免全局变量的泛滥,合理使用命名空间





本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5164628.html,如需转载请自行联系原作者

相关文章
|
6月前
|
JavaScript 前端开发 安全
闭包治愈“全局变量恐惧症”,利用闭包实现JavaScript私有变量(三)
闭包治愈“全局变量恐惧症”,利用闭包实现JavaScript私有变量
|
6月前
|
存储 JavaScript 前端开发
闭包治愈“全局变量恐惧症”,利用闭包实现JavaScript私有变量(一)
闭包治愈“全局变量恐惧症”,利用闭包实现JavaScript私有变量
|
2月前
|
JavaScript 前端开发
JavaScript如何创建,全局变量
JavaScript如何创建,全局变量
|
1月前
|
存储 JavaScript 前端开发
Vue.js项目中全面解析定义全局变量的常用方法与技巧
Vue.js项目中全面解析定义全局变量的常用方法与技巧
41 0
|
3月前
|
JavaScript 前端开发
js中this是指向的哪个全局变量,改变this指向的方法有什么?
js中this是指向的哪个全局变量,改变this指向的方法有什么?
19 0
|
6月前
|
JavaScript 前端开发
闭包治愈“全局变量恐惧症”,利用闭包实现JavaScript私有变量(二)
闭包治愈“全局变量恐惧症”,利用闭包实现JavaScript私有变量
|
6月前
|
JavaScript 前端开发
js中this是指向的哪个全局变量,改变this指向的方法有什么
js中this是指向的哪个全局变量,改变this指向的方法有什么
41 0
|
JavaScript 前端开发
【JS 经典面试题】全局变量和局部变量
【JS 经典面试题】全局变量和局部变量
113 1
|
JavaScript 前端开发
JavaScript 全局变量
JavaScript 全局变量
76 0
|
存储 自然语言处理 JavaScript
JS全局变量
1. Scope(作用域) 2. Lexical Environments (词法环境) 3. 全局对象(global object) 4. 浏览器环境下的globalThis 5. 全局环境(global envrionment) • Script 作用域 和Module 作用域 • 生成变量: 声明环境记录 vs 对象环境记录 • 访问变量 • 全局ECMAScript变量和全局宿主变量 6. 一图胜前言
111 0