思路:题目意思是,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是小写的喔。