标签:arguments 赋值 相同 for rip 解耦 min nbsp 元素
// 遇到相同元素级属性,以(minor)为准 // 不返还新Object,而是main改变 function mergeJSON(minor, main) { for(var key in minor) { if(main[key] === undefined) { // 不冲突的,直接赋值 main[key] = minor[key]; continue; } // 冲突了,如果是Object,看看有么有不冲突的属性 // 不是Object 则以(minor)为准为主, console.log(key) if(isJSON(minor[key])||isArray(minor[key])) { // arguments.callee 递归调用,并且与函数名解耦 console.log("is json") //arguments.callee(minor[key], main[key]); mergeJSON(minor[key], main[key]); }else{ main[key] = minor[key]; } } } function isJSON(target) { return typeof target == "object" && target.constructor == Object; } function isArray(o) { return Object.prototype.toString.call(o) == ‘[object Array]‘; } var a = { ccc: { d: 111, b: 222, a: 222, ee: [{ a: 1 }, { b: 2 }] } }; var b = { ccc: { fff: 666, ee: [{ c: 3 }] } }; mergeJSON(b, a); console.log(a); console.log(b);
标签:arguments 赋值 相同 for rip 解耦 min nbsp 元素
原文地址:https://www.cnblogs.com/catgatp/p/9189228.html