题目描述
根据包名,在指定空间中创建对象
输入描述:
namespace({a: {test: 1, b: 2}}, 'a.b.c.d')
输出描述:
{a: {test: 1, b: {c: {d: {}}}}}
function namespace(oNamespace, sPackage) {
var arr = sPackage.split('.');//arr[0]=a,arr[1]=b,arr[2]=c,arr[3]=d
var obj = oNamespace; //保留对原始对象的引用
for(var i=0;i<arr.length;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;
}