使用匿名函数控制作用域,防止变量冲突
原理:
使不同变量不直接在window作用域里
方法:
(function(){
[code]
})();
应用:
在window作用域下定义一个全局变量,实现多私有函数通信,用hash对象作为全局变量
var GLOBAL = {};
(function(){
GLOBAL.str2 = a;
GLOBAL.str = b;
})();
(function(){
var a = GLOBAL.str2,
b = GLOBAL.str;
})();
定义命名空间函数
var GLOBAL = {};
GLOBAL.namespace = function(str){
// 分割字符串,o存储Object名,初始时为GLOBAL
var arr = str.split("."),
o = GLOBAL;
// 顶层Object若为GLOBAL则跳过,否则加入GLOBAL
for (i = (arr[0] == "GLOBAL") ? 1 : 0; i < arr.length; i++){
// 将分割的字符串 分别转换为Object
o[arr[i]] = o[arr[i]] || {};
// 当前Object指向新加入的Object
o = o[arr[i]];
}
}
// 定义一个GLOBAL.A.X;
GLOBAL.namespace("A.X");
// 全局就可以使用 GLOBAL.A.X 随意存取数据了
var GLOBAL.A.X.a = 90;