首页 > 代码库 > 如何让js不产生冲突,避免全局变量的泛滥,合理运用命名空间
如何让js不产生冲突,避免全局变量的泛滥,合理运用命名空间
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <script type="text/javascript">// </script> |
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <script type="text/javascript">// </script> |
为了避免变量之间的覆盖与冲突,可以生成命名空间,命名空间是一种特殊的前缀,在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不产生冲突,需避免全局变量的泛滥,合理使用命名空间
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。