根据包名,在指定空间中创建对象
根据包名,在指定空间中创建对象
输入描述:
namespace({a: {test: 1, b: 2}}, 'a.b.c.d')
输出描述:
{a: {test: 1, b: {c: {d: {}}}}}
function namespace(oNamespace, sPackage) { var packageArr = sPackage.split('.'); var curObj = oNamespace; // 保留对原始对象的引用 for(var i=0, len=packageArr.length; i<len; i++){ if(packageArr[i] in oNamespace){ // 空间名在对象中 if(typeof oNamespace[packageArr[i]] !== 'object'){ // 为原始值 oNamespace[packageArr[i]] = {}; // 将此属性设为空对象 } }else{ // 空间名不在对象中,建立此空间名属性,赋值为空 oNamespace[packageArr[i]] = {}; } oNamespace = oNamespace[packageArr[i]]; // 将指针指向下一个空间名属性 } return curObj; } console.log(namespace({a: {test: 1, b: 2}}, 'a.b.c.d')); //{ a: { test: 1, b: { c: [Object] } } }
链接来自牛客网:根据包名,在指定空间中创建对象