https://jsprimer.net/basic/object/
上記サイトで下記の様なコードが書かれ、説明に
「注意点として、Object.assignメソッドはsourcesオブジェクトのプロパティを浅くコピー(shallow copy)する点です。 shallow copyとは、sourcesオブジェクトの直下にあるプロパティだけをコピーするということです。 そのプロパティの値がオブジェクトである場合に、ネストした先のオブジェクトまでも複製するわけではありません。」
と書かれています。
「sourcesオブジェクトの直下にあるプロパティだけをコピーするということです。 そのプロパティの値がオブジェクトである場合に、ネストした先のオブジェクトまでも複製するわけではありません。」
との箇所から私は今回の場合
「shallowClone(obj)」
には
「obj={level:1,}」
だけが代入されると思ったのですが、これは間違えているのでしょうか?
間違えている場合「cloneObj.nest」「obj.nest」には何が入っているのでしょうか?
なぜ「console.log(cloneObj.nest === obj.nest); 」は「true」となるのでしょうか?
javascript
1const shallowClone = (obj) => { 2 return Object.assign({}, obj); 3}; 4const obj = { 5 level: 1, 6 nest: { 7 level: 2 8 }, 9}; 10const cloneObj = shallowClone(obj); 11// `nest`オブジェクトは複製されていない 12console.log(cloneObj.nest === obj.nest); // => true
回答3件
あなたの回答
tips
プレビュー