JavaScriptのObject.assign()メソッドとは?使い方と注意点を解説
Object.assign()メソッドは、1つ以上のソースオブジェクトからターゲットオブジェクトへ、列挙可能な独自プロパティの値をすべてコピーするためのメソッドです。戻り値として、コピー先となったターゲットオブジェクトが返されます。
基本的な使い方
const targetObj = { a: 1, b: 2 };
const sourceObj = { b: 4, c: 5 };
const returnedTarget = Object.assign(targetObj, sourceObj);
console.log(targetObj);
console.log(returnedTarget);
console.log(returnedTarget === targetObj);
console.log(sourceObj);
出力結果
{ a: 1, b: 4, c: 5 }
{ a: 1, b: 4, c: 5 }
true
{ b: 4, c: 5 }
この例では、sourceObj のプロパティ b と c が targetObj へコピーされています。同じキー名(b)が存在する場合は、後から渡されたソース側の値で上書きされる点に注目してください。
押さえておきたいポイント
ソースオブジェクト(sourceObj)は元の状態のまま変更されません。
returnedTarget と targetObj は同一のオブジェクトです。つまり、Object.assign()は新しいオブジェクトを生成せず、第一引数のオブジェクト自体を変更して返しています。
コピーされるのは「列挙可能」かつ「オブジェクト自身が持つ」プロパティのみです。継承されたプロパティや Symbol 以外の非列挙プロパティはコピー対象外となります。
内部処理ではソースに対して [[Get]]、ターゲットに対して [[Set]] を使用するため、ゲッターとセッターが呼び出されます。
主な活用シーン
オブジェクトのマージ: 複数のオブジェクトのプロパティを1つにまとめたいとき
デフォルト設定の上書き: デフォルト設定オブジェクトにユーザー設定を反映させるとき
オブジェクトの複製: 元のオブジェクトを変更せずに作業用コピーを作るとき
const defaults = { theme: "light", fontSize: 14 };
const userSettings = { theme: "dark" };
const settings = Object.assign({}, defaults, userSettings);
console.log(settings);
// { theme: "dark", fontSize: 14 }
このように、第一引数に空オブジェクト {} を渡すことで、元のオブジェクトを破壊せずに新しいオブジェクトを生成できます。
注意:浅いコピー(シャローコピー)であること
Object.assign()によるコピーは「浅いコピー」です。ネストされたオブジェクトや配列は値そのものではなく参照がコピーされるため、コピー先で内容を変更すると元のオブジェクトにも影響します。深いコピーが必要な場合は、structuredClone() の利用を検討しましょう。
-
JavaScriptのMapオブジェクトとは?特徴と基本的な使い方を解説
JavaScriptのMapオブジェクトとは MDNドキュメントによると、Mapオブジェクトは「キーと値のペア」を保持し、キーが挿入された元の順序を記憶するデータ構造です。任意の値(オブジェクトとプリミティブ値の両方)を、キーまたは値として自由に使用できます。 ここで特に重要なポイントは、オブジェクトそのものもMapのキーとして使えるという点です。これは通常のJavaScriptオブジェクトでは実現できない動作です。一般的なJSオブジェクトでは、キーとして使用できるのはプリミティブ値(文字列や数値など)のみに限られます。 さらに、Mapが特定の場面で役立つもう一つの大きな特徴は、反復可能(it
-
JavaScriptでのSentryの使い方とは?主な機能をわかりやすく解説
Sentryとは?JavaScript開発を支えるデバッグ・監視ツールSentryは、本番環境(プロダクション)で稼働しているコードを追跡できる、JavaScript向けの総合的なデバッグ・監視ツールパッケージです。開発環境では再現しないエラーや、ユーザーの端末上でのみ発生する不具合を効率的に把握できるため、Webアプリケーションの品質向上に欠かせない存在となっています。Sentryが提供する主な機能は以下の通りです。1. 環境情報と使用状況の記録によるバグ再現エラー発生時のOS、ブラウザ、デバイス、URLなどの環境情報やユーザーの操作状況を自動的に記録します。これにより、報告だけでは再現が難