多人一起开发js文件时,由于所起的变量名都是window的属性(即全局变量),容易重名冲突,解决办法是每个程序员所写的代码都放在匿名函数中,形式为(function(){})();这样包在匿名函数中的变量为局部变量,不会与其他程序员的变量相冲突。
如果程序员A要引用程序员B写的某个变量,如何解决呢?
解决的办法是设计一个全局变量,利用全局变量的桥梁作用,使得不同程序段可以通信。如何设计全局变量呢,可以采用命名空间的方式:
<script>
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>
使用方法:当程序员A写的程序:
<script>
(function(){
var a = "abc",b="123";
GLOBAL.namespace("A.CAT");
GLOBAL.A.str2 = a;
GLOBAL.A.str = b;
})();
</script>
程序员B就可以引用GLOBAL.A.str2和GLOBAL.A.str了。
转载于:https://blog.51cto.com/helloyxw/716586