メソッド Object.assign

メソッド Object.assign は、元のオブジェクトのプロパティと値をコピーし、 新しいオブジェクトを返します。このメソッドの最初のパラメータで、 コピー先のターゲットオブジェクトを指定し、 2番目のパラメータで、コピーする必要があるオブジェクトを指定します。

構文

javascriptObject.assign(コピー先, オブジェクト);

例

元のオブジェクトから新しいオブジェクトを取得してみましょう:

javascriptlet obj = {'a': 1, 'b': 2, 'c': 3};
let newObj = Object.assign({}, obj);
console.log(newObj);

コード実行結果:

javascript{a: 1, b: 2, c: 3}

例

では、複数の元のオブジェクトから新しいオブジェクトを取得しましょう。 パラメータでカンマ区切りでそれらを列挙します:

javascriptlet obj1 = {'a': 1, 'b': 2};
let obj2 = {'c': 3, 'd': 4};

let newObj = Object.assign({}, obj1, obj2);
console.log(newObj);

コードを実行した後、2つの元のオブジェクトが 1つの新しいオブジェクトにマージされたことがわかります:

javascript{a: 1, b: 2, c: 3, d: 4}

例

また、メソッド Object.assign は 新しい配列を取得するためにも使用できます。 なぜなら、配列はその型においてもオブジェクトに属するからです。 元の配列から要素をコピーして新しい配列を作成してみましょう:

javascriptlet arr = [1, 2, 3, 4];
let newArr = Object.assign([], arr);

console.log(newArr);

コード実行結果:

javascript[1, 2, 3, 4]

例

メソッド Object.assign を使用する際には、 構文に注意深く従う必要があります。 例えば、最初のパラメータにターゲットオブジェクトを追加せずに、 コピーするオブジェクトだけを残すと、 それがそのまま返されます:

javascriptlet obj = {1:'a', 2: 'b', 3: 'c'};
let newObj = Object.assign(obj);

console.log(newObj === obj);

コード実行結果:

javascripttrue

関連項目

  • オブジェクトのプロパティの配列を返すメソッド Object.keys
  • オブジェクトの値の配列を返すメソッド Object.values