您的当前位置:首页正文

根据包名,在指定空间中创建对象

来源:要发发知识网
详细描述:

输入:namespace({a: {test: 1, b: 2}}, 'a.b.c.d')
输出:{a: {test: 1, b: {c: {d: {}}}}}

function namespace(oNamespace, sPackage) {
    var str = sPackage;
    var arr = str.split('.');
    var len = arr.length;

    // {arr[0]:{text1,arr[1]:{arr[2]:{arr[3]:{}}}}}
    var obj = oNamespace; //保留对原始对象的引用

    for(var i = 0; i < len; i++){
        if(arr[i] in oNamespace){ //空间名在对象中
            if(typeof oNamespace[arr[i]] != 'object'){ //为原始值
                oNamespace[arr[i]] = {}; //将此属性设置为空对象
            }
        }else{  //空间名不在对象中,建立此属性,赋值为空
            oNamespace[arr[i]] = {};
        }

        oNamespace = oNamespace[arr[i]];
    }
    return obj;
}