複数のオブジェクトを浅くマージする
// ── 基本: オブジェクトのプロパティをコピーする ──────────
// Object.assign(コピー先, コピー元1, コピー元2, ...)
const target = { a: 1, b: 2 };
Object.assign(target, { c: 3 }, { d: 4 });
console.log(target); // { a: 1, b: 2, c: 3, d: 4 } ← target 自体が変更される
// ── 新しいオブジェクトとしてコピー ───────────────────
const original = { name: '田中', age: 25 };
const copy = Object.assign({}, original, { age: 26 }); // age を上書き
console.log(copy); // { name: '田中', age: 26 }
console.log(original); // { name: '田中', age: 25 } ← 変わらない
// ⚠️ 浅いコピーなのでネストしたオブジェクトは参照共有
// 現代ではスプレッド構文が主流
const modern = { ...original, age: 26 }; // 同じ結果スプレッド構文({ ...a, ...b })のほうが可読性が高い場面が多い。ネストしたオブジェクトは浅いコピーになる点に注意。