关于js命名空间命名在tab中的使用

在部署项目的过程中为了避免多人合作出现js命名的冲突,我们引入了js函数命名空间的概念。也就是说js命名空间也就是为了减少全局函数的数量,将不同模块需要通讯的函数定义在一个特定的全局变量的属性中。比如工程师A要负责开发的模块需要和工程师B负责开发的模块通讯,也就是说工程师A的模块和工程师B的模块要相互调用彼此模块中的函数,那么我们可以将模块A和模块B分别挂载在一个全局变量如GLABAL={}对象上,作为它的一个属性,如GLABAL.A和GLABAL.B将模块A和模块B中需要对方调用的函数方法分别挂载在GLABAL.A和GLABAL.B上,这样既减少了全局变量的数量,可读性也更强。

下面给出命名空间的函数的一个表达方法作为参考:

//javasript命名空间函数
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]];        
    }    
}

如果我们要声明一个命名空间如GLABAL.Dom可以直接用GLABAL.namespace("Dom"),如果我们要声明一个命名空间GLABAL.A.CAT可以直接用GLABAL.namespace(A.CAT);

如果我们不喜欢GLABAL这个全局变量,比如我们要用MYAPP这个全局变量,我们也可以修改命名空间函数的全局变量,修改后的代码如下:

//javasript命名空间函数
var MYAPP={};
GLOBAL.namespace=function(str){
    var arr=str.split("."),o=MYAPP;
    for(i=(arr[0]=="MYAPP")?1:0;i<arr.length;i++){
        o[arr[i]]=o[arr[i]]||{};
        o=o[arr[i]];        
    }    
}

这样我们就可以通过这个函数来声明诸如MYAPP.Dom这样的命名空间了。

posted on 2016-09-06 15:43  指尖的力量  阅读(176)  评论(0)    收藏  举报

导航