不断往oNamespace内遍历匹配包名,使用临时变量inner保存oNamespace内部对象地址,按照包名修正内部对象。
function namespace(oNamespace, sPackage) { let arr = sPackage.split('.'); let inner = oNamespace; for(let i=0, len = arr.length; i< len; i++){ if(arr[i] in inner){ if(!(inner[arr[i]] instanceof Object)){ inner[arr[i]] = {}; } } else { inner[arr[i]] = {}; } inner = inner[arr[i]];// 内移 } return oNamespace; }