题解 | #根据包名,在指定空间中创建对象#
根据包名,在指定空间中创建对象
http://www.nowcoder.com/practice/a82e035501504cedbe881d08c824a381
function namespace(oNamespace, sPackage) {
//包名用.分割形成名为keys的数组
let keys = sPackage.split('.')
//对数组使用高阶函数reduce
//用法 [].reduce((先前的返回值,当前item的值)=>{return },pre初始值)
keys.reduce((pre, cur) => {
//判断oNamespace['a']是否为object类型
if (typeof pre[cur] != 'object') {
//不是,就给个空对象\n pre[cur]={};
}
//是,那就返回出去,充当下次的pre值
return pre[cur] //{test: 1, b: 2}
// pre cur pre[cur]
// {a: {test: 1, b: 2}} a {test: 1, b: 2}
}, oNamespace)
return oNamespace
}