LoginSignup
45
37

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-06-03

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()を使った方がいいケースがあったりとかあるみたいなので今度詳しく調べる!

45
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
37