function namespace(oNamespace, sPackage) {
if(!(sPackage instanceof Array)){
var keys = sPackage.split(".")
}
var tmpNamespace = oNamespace
for (let index in keys) {
const key = keys[index]
console.log(oNamespace)
console.log(tmpNamespace)
if(!tmpNamespace[key]){
tmpNamespace[key] = {}
}
tmpNamespace = tmpNamespace[key]
}
} js中的浅拷贝可以操作地址从而改变变量的值 function namespace(oNamespace, sPackage) {
sPackage = sPackage.split('.')
let key = sPackage.shift() // 每次都获得第一个key
if (!key) { // 当获得的key为空时,即为终止条件
return
}
if (!oNamespace.hasOwnProperty(key)) { // 如果不存在该属性,则创建
oNamespace[key] = {}
}
namespace(oNamespace[key], sPackage.join('.')) // 递归
return oNamespace
} function namespace(oNamespace, sPackage) {
if (sPackage.length > 1) {
sPackage = sPackage.split('.');
var obj = oNamespace;
for (let i = 0; i < sPackage.length; i++) {
obj = namespace(obj, sPackage[i]);
};
return oNamespace;
};
if (!oNamespace[sPackage] || oNamespace[sPackage] instanceof Array || typeof oNamespace[sPackage] != 'object') {
oNamespace[sPackage] = {};
};
return oNamespace[sPackage];
}; if (!ns[scope[i]] ...) {...}
if (!(scope[i] in ns) ...) {...}
if (typeof ns[scope[i]] != 'object' ...) {...}
if (!(ns[scope[i]] instanceof Object) ...) {...} function isPlainObject(value) {
return Object.prototype.toString.call(value).slice(8, -1) == 'Object';
}
function namespace(oNamespace, sPackage) {
var scope = sPackage.split('.');
var ns = oNamespace;
for (var i = 0; i < scope.length; ++i) {
if (!ns.hasOwnProperty(scope[i]) || !isPlainObject(ns[scope[i]])) {
ns[scope[i]] = {};
}
ns = ns[scope[i]];
}
return oNamespace;
}