/输入 namespace({a: {test: 1, b: 2}}, 'a.b.c.d') //输出 {a: {test: 1, b: {c: {d: {}}}}} function namespace(oNamespace, sPackage) { var name = sPackage.split('.'); //将sPackage中的'键名'提取出 //浅拷贝 var res = oNamespace; //保留对原始对象的引用 for (var i in name) { if (oNamespace.hasOwnProperty(name[i])) { if (typeof oNamespace[name[i]] !== 'object') { //若存在该属性且类型不是对象,则将其转化为对象 oNamespace[name[i]] = {}; } } else { oNamesapce[name[i]] = {}; //若不存在改对象则直接赋值 } oNamespace = oNamespace[name[i]]; } } namespace({a: {test: 1, b: 2}}, 'a.b.c.d');