Javascript匿名函数与命名空间

使用匿名函数控制作用域,防止变量冲突

原理:

使不同变量不直接在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;
除非注明, 风波竹林 文章均为原创,转载请以链接形式标明本文地址
本文地址: https://blog.fbzl.org/javascript匿名函数与命名空间/

发表回复