ES6でオブジェクトのコピー

  • 9
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

ES6ではObject.assign()でオブジェクトのコピーができるようになったのでメモ。

これまでのオブジェクトのコピー

普通に代入しただけではコピーされない。(jsをやられている方はご存知かとは思いますが。。。)

sampe
var obj = {a: '1'};
var obj1 = obj;

obj.b = '2';

console.log(obj1);
// => { a: '1', b: '2' }

console.log(obj);
// => 期待値としては {a: '1'}だが実際には { a: '1', b: '2' }となる

これを避けるためには、これまではライブラリ(jqueryやlodashなど)を使ってオブジェクトをコピーしていた。

ES6でのオブジェクトのコピー

ES6ではObject.assignという関数を使ってコピーが出来るようになったみたい。

Object.assign()

これを使うと...

es6
let obj = {a: '1'};

let obj1 = Object.assign({}, obj);

obj.b = '2';

console.log(obj1);
// => { a: '1' }

console.log(obj);
// => { a: '1', b: '2' }

期待どおりの結果になった!

とりあえず、今回はここまで。

ドキュメントを見ると、Object.assign()でマージできたり、ケースによってはObject.getOwnPropertyDescriptor()とかObject.defineProperty()を使った方がいいケースがあったりとかあるみたいなので今度詳しく調べる!