function namespace(oNamespace, sPackage) { var package = sPackage.split('.'); var obj = oNamespace; for (var i = 0; i < package.length; ++i) { if (typeof obj[package[i]] !== 'object') { obj[package[i]] = {}; } obj = obj[package[i]]; } return oNamespace; }好久没通宵了。。
function namespace(oNamespace, sPackage) { var arr = sPackage.split('.');//拆分数组 var _point = oNamespace;//建立对象引用 while(arr.length > 0){//遍历 if(Object.prototype.toString.call(_point[arr[0]]) !== '[object Object]'){ _point[arr[0]] = {};//不是对象就覆盖 } _point = _point[arr[0]]; //重新定位引用 arr.shift(); } return oNamespace; }
function namespace(oNamespace, sPackage) { var temp = oNamespace; sPackage.split('.').forEach(function(key) { // console.log(temp[key]) if (temp && temp[key] && typeof temp[key] === 'object') { temp[key] = temp[key]; } else { temp[key] = {}; } temp = temp[key]; }); return oNamespace; }
function namespace(oNamespace, sPackage) { let obj = oNamespace; let arr = sPackage.split('.'); let len = arr.length; for(let i=0; i<len; i++) { if(arr[i] in obj) continue; obj[arr[i]] = {}; obj = obj[arr[i]]; } return oNamespace; }
//递归 function namespace(oNamespace, sPackage) { var firstPointIndex = sPackage.indexOf('.'); if(firstPointIndex === -1) return oNamespace[sPackage] = {}; var firstPath = sPackage.slice(0,firstPointIndex); if(typeof oNamespace[firstPath] !== 'object') oNamespace[firstPath] = {}; namespace(oNamespace[firstPath], sPackage.slice(firstPointIndex + 1)); return oNamespace; }
function namespace(oNamespace, sPackage) { var arr=sPackage.split("."); for (var i=0,len=arr.length;i<len;i++) { if (!oNamespace[arr[i]]) { oNamespace[arr[i]]={}; } oNamespace=oNamespace[arr[i]]; } return oNamespace; }
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; }
function namespace(oNamespace, sPackage) { if(sPackage.length <= 0) return; // var arr = sPackage.split('.'); var pointer = oNamespace; if(sPackage[0] in oNamespace) { if(typeof oNamespace[sPackage[0]] !== "object") { oNamespace[sPackage[0]] = {}; } } else { oNamespace[sPackage[0]] = {}; } oNamespace = oNamespace[sPackage[0]]; namespace(oNamespace, sPackage.slice(2)); return pointer; }
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; }
function namespace(oNamespace, sPackage) { var packNameArr=sPackage.split("."); var curObj=oNamespace; for(var i=0;i<packNameArr.length;i++){ if(!curObj.hasOwnProperty(packNameArr[i])){ curObj[packNameArr[i]]={}; curObj=curObj[packNameArr[i]]; } } return oNamespace; }
function namespace(oNamespace, sPackage) { let arr = sPackage.split('.') let pointer = oNamespace for (let i = 0; i < arr.length; i++) { // 如果为undefined或者不是对象则赋值为空对象 if (!pointer[arr[i]] || typeof pointer[arr[i]] !== 'object') { pointer[arr[i]] = {} } pointer = pointer[arr[i]] } return oNamespace }