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 }