/* * 再帰的なオブジェクトのマージ 1 (クロスブラウザ) */ var merge = function merge(a, b) { for (key in b) { if (b.hasOwnProperty(key)) { a[key] = (key in a) ? ((typeof a[key] === "object" && typeof b[key] === "object") ? merge(a[key], b[key]) : b[key]) : b[key]; } } return a; }; // Usage var obj = { hoge: "hogehoge", piyo: [ "ピヨ", "piyopiyo" ] }; obj = merge(obj, {test: "hello", piyo: ["piyo"]}); console.log(obj);