Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

ES6(ES2015)で実装されたObject.assignでディープコピーできると思っていた時期が私にもあった。 Object.assignでディープコピーして(した気になって)、プロパティの値を変更したとき、元のオブジェクトにも影響していることに気づいた。 // Object.assign.js const obj1 = { hoge: 'hoge', fuga: { foo: 'foo' } }; // ディープコピーのつもり const obj2 = Object.assign({}, obj1); obj2.hoge = 'hogehoge'; // obj1.hoge: 'hoge' obj2.hoge: 'hogehoge' ← ディープコピーされてる? console.log('obj1.hoge:', obj1.hoge, 'obj2.hoge:', obj2.hoge)
概要 Object.assignはオブジェクト同士をマージするJSerの誰もが長年追い求めた夢のメソッドである。 使い方 Object.assign( target, ...sources ) 第一引数で渡したオブジェクトに、第二引数以降のオブジェクトが直接持つ、 全ての列挙可能なStringまたはSymbolプロパティを加え、結果として返す。 例: var sym = Symbol() var obj1 = { "str": 1, } var obj2 = { "str": 2, [sym]: 2 } var obj3 = Object.assign( obj1, obj2 ) console.log( obj1 == obj3 ) // true console.log( obj1["str"] == 2 ) // true console.log( obj1[ sym ] == 2
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く