assign이나 json으로 깊은복사를 해봐라
const obj1 = {
a: 1,
b: {
c: 2,
d: 3
}
};
const obj2 = Object.assign({}, obj1);
// obj1과 obj2는 서로 다른 객체
console.log(obj1.b === obj2.b); // true
// obj2.b를 변경해도 obj1.b에는 영향이 없음
obj2.b.c = 4;
console.log(obj1.b.c); // 2
console.log(obj2.b.c); // 4
const obj1 = {
a: 1,
b: {
c: 2,
d: 3
}
};
const obj2 = JSON.parse(JSON.stringify(obj1));
// obj1과 obj2는 서로 다른 객체
console.log(obj1.b === obj2.b); // false
// obj2.b를 변경해도 obj1.b에는 영향이 없음
obj2.b.c = 4;
console.log(obj1.b.c); // 2
console.log(obj2.b.c); // 4
위 두 가지 방법 중 첫 번째 방법이 일반적으로 더 빠르고 성능이 좋습니다. 하지만 깊은 복사를 수행할 때, 객체 내부에 함수나 undefined가 포함되어 있다면 복사되지 않는다는 한계가 있습니다. 따라서 객체 내부에 함수나 undefined가 포함되어 있다면 JSON 방법을 사용해야 합니다.
댓글 영역