Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 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 |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年8月23日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.