Object.assign()의 함정
let obj = {
a: 1,
b: {
c: 2,
},
}
let newObj = Object.assign({}, obj);
console.log(newObj); // { a: 1, b: { c: 2} }
obj.a = 10;
console.log(obj); // { a: 10, b: { c: 2} }
console.log(newObj); // { a: 1, b: { c: 2} }
newObj.a = 20;
console.log(obj); // { a: 10, b: { c: 2} }
console.log(newObj); // { a: 20, b: { c: 2} }
newObj.b.c = 30;
console.log(obj); // { a: 10, b: { c: 30} }
console.log(newObj); // { a: 20, b: { c: 30} }
//obj.b.c 는 왜 바뀜?????
//delete obj.b.c 해도 newObj.b.c가 같이 지워짐
둘 다 개별 복사본이 만들어지지 않았기 때문에 개체에 대한 동일한 참조를 공유합니다.
newObj.b. obj.b개체의 속성에 대한 변경 사항은 개체를 사용하는 모든 참조에 적용됩니다.
참조1
https://www.digitalocean.com/community/tutorials/copying-objects-in-javascript
참조2 - 중첩 객체 복사 << 검색
https://ko.javascript.info/object-copy