Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年9月以降、すべてのブラウザーで利用可能です。
Object.assign() は静的メソッドで、すべての列挙可能な自身のプロパティの値を、 1 つ以上のコピー元オブジェクトからコピー先オブジェクトにコピーするために使用されます。変更されたコピー先オブジェクトを返します。
コピー先オブジェクト — コピー元のプロパティを適用するもので、変更後に返されます。対象とするプリミティブ値が指定された場合、その値はオブジェクトに変換されます。
source1, …, sourceNコピー元オブジェクト (単数または複数) — 適用したいプロパティを含むオブジェクトです。
コピー先オブジェクトです。
次のいずれかの場合に発生します。
コピー先オブジェクトのプロパティは、コピー元に同じキーのプロパティがあると上書きされます。より後のコピー元のプロパティが、より前のものを同様に上書きします。
Object.assign() メソッドは、コピー元オブジェクトから列挙可能 (enumerable) かつ直接所有 (own) のプロパティだけをコピー先オブジェクトにコピーします。この際、コピー元オブジェクトには [[Get]]、コピー先オブジェクトには [[Set]] を使いますので、ゲッターとセッターを呼び出すことになります。これはプロパティの代入 (assign) であり、プロパティをコピーしたり新しく定義したりするのとは異なります。そのため、コピー元にゲッターが存在する場合、新しいプロパティをプロトタイプにマージする用途には不適切でしょう。
プロパティ定義を (列挙可能属性も含めて) プロトタイプの中にコピーするには、このメソッドではなく Object.getOwnPropertyDescriptor() と Object.defineProperty() を使用してください。
String と Symbol の両方のプロパティがコピーされます。
エラーが発生した場合、例えばプロパティが書き込み不可の場合は、 TypeError が発生しますが、エラーが発生する前にプロパティが追加される場合、 target オブジェクトが変更されることがあります。
ディープクローンを行う場合、別に structuredClone() のような代替手段を使用する必要があります。 Object.assign() はプロパティ値のみをコピーするからです。
元の値がオブジェクトへの参照である場合、参照の値のみがコピーされます。
プロパティは、引数の順でより後にあるオブジェクトが同じプロパティを持っていると上書きされます。
| ECMAScript® 2027 Language Specification # sec-object.assign |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。