JavaScriptでオブジェクトを結合する際によく使用される`Object.assign()`メソッド。このメソッドの使い方と活用方法について、実践的なコード例を交えて詳しく解説します。
Object.assign()とは
`Object.assign()`は、1つ以上のソースオブジェクトから、ターゲットオブジェクトにプロパティをコピーするメソッドです。
基本的な構文は以下の通りです:
Object.assign(target, ...sources)基本的な使い方
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const result = Object.assign(target, source);
console.log(result); // { a: 1, b: 4, c: 5 }
console.log(target); // { a: 1, b: 4, c: 5 }新しいオブジェクトを作成する
元のオブジェクトを変更せずに、新しいオブジェクトを作成する場合:
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const newObject = Object.assign({}, target, source);
console.log(newObject); // { a: 1, b: 4, c: 5 }
console.log(target); // { a: 1, b: 2 } - 変更されていない複数のオブジェクトの結合
const object1 = { a: 1 };
const object2 = { b: 2 };
const object3 = { c: 3 };
const merged = Object.assign({}, object1, object2, object3);
console.log(merged); // { a: 1, b: 2, c: 3 }よくある使用例
デフォルト値の設定
const defaults = { size: 'medium', color: 'red' };
const userPreferences = { color: 'blue' };
const settings = Object.assign({}, defaults, userPreferences);
console.log(settings); // { size: 'medium', color: 'blue' }オブジェクトのクローン作成
const original = { x: 1, y: 2 };
const clone = Object.assign({}, original);注意点
浅いコピーであること
`Object.assign()`は浅いコピーを行います:
const obj1 = {
a: 1,
b: {
c: 2
}
};
const copy = Object.assign({}, obj1);
copy.b.c = 3;
console.log(obj1.b.c); // 3 - ネストされたオブジェクトは参照がコピーされるプロパティの上書き
後のソースオブジェクトのプロパティが、前のソースオブジェクトのプロパティを上書きします:
const target = { a: 1, b: 2 };
const source1 = { b: 3 };
const source2 = { b: 4 };
Object.assign(target, source1, source2);
console.log(target.b); // 4代替手段
ES2018以降では、スプレッド構文を使用することもできます:
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const result = { ...target, ...source };
console.log(result); // { a: 1, b: 4, c: 5 }まとめ
`Object.assign()`は、オブジェクトの結合やコピーに非常に便利なメソッドです。ただし、浅いコピーであることや、プロパティの上書きの挙動には注意が必要です。モダンなJavaScriptでは、スプレッド構文という代替手段も利用可能です。用途に応じて適切な方法を選択することが重要です。