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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h3>根据包名,在指定的空间中创建对象</h3>
<p>输入描述:namespace({a: {test: 1, b: 2}}, 'a.b.c.d')</p>
<p>输出描述:{a: {test: 1, b: {c: {d: {}}}}}</p>
<script>
    function namespace(oNamespace,sPackage){
        var arr=sPackage.split(".");
        var res=oNamespace;//保留对原始对象的引用

        for(var i=0,len=arr.length;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 res;
    }
</script>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/tozeroblog/article/details/82262046