思路:题目意思是,a.b.c.d,即在a属性值中包含b属性,而在b属性值中又包含c属性,而在c属性值中又包含d属性,因为对象不仅可以使用obj[key],还可以使用obj.key。首先使用split方法以.分割sPackage得到属性名数组arr,然后使用tmp表示当前对象oNamespace,接着遍历arr,分别判断属性名对应的属性值是否的对象类型,如果不是则将其赋值为对象,同时将当前属性值作为下一次的对象。
function namespace(oNamespace, sPackage) {
//{a: {test: 1, b: {c: {d: {}}}}}
//a.b.c.d
let arr=sPackage.split(".")
let tmp=oNamespace
for(let v of arr)
{
//let k of arr k是元素值
//let k in arr k是下标
//object是小写的喔!
if(typeof tmp[v] !== "object")
tmp[v]={}
//将当前值作为下一次的遍历空间
tmp=tmp[v]
}
}
总结:let k of arr k是元素值,let k in arr k是下标,对象类型object是小写的喔。



京公网安备 11010502036488号