JAVASCRIPT
Shallow Copy & Deep Copy
seo dori
2023. 9. 7. 13:41
Shallow Copy(얕은 복사)
얕은 복사는 주로 최상위 레벨의 속성만을 복사하고, 그 하위 객체는 참조로 복사하는 방식
이것은 원본 객체와 복사본이 최상위 레벨 속성을 공유하지만 중첩된 객체는 공유하지 않는 방법입니다.
const original = { a: 1, b: { c: 2 } };
const shallowCopy = { ...original }; //또는 Object.assign({}, original);
original.b.c = 3;
console.log(shallowCopy.b.c); // 출력: 3 (변경 반영)
shallowCopy는 original의 최상위 레벨 속성 a와 b를 복사합니다.
a는 원시 값이므로 복사된 객체에서 독립적입니다.
그러나 b는 객체이고, 얕은 복사로 인해 original과 shallowCopy는 동일한 객체를 참조합니다.
원본 객체의 b 속성을 변경하면 복사본에도 영향을 미칩니다.
Deep Copy(깊은 복사)
깊은 복사는 객체의 모든 레벨에서 복사를 수행하는 방법
즉, 원본 객체의 모든 속성과 중첩된 객체 및 배열까지 모두 새로운 객체로 복제됩니다.
깊은 복사는 독립적인 복사본을 생성하므로 원본 객체와 복사본 간의 변경 사항이 서로에게 영향을 주지 않습니다.
const originalObj = { a: 1, b: { c: 2 } };
const copiedObj = JSON.parse(JSON.stringify(originalObj));
copiedObj.a=2
console.log(originalObj.a) //output 1
copiedObj는 originalObj의 모든 속성과 중첩된 객체를 재귀적으로 복사합니다. 이로써 원본과 복사본은 완전히 독립적입니다.
원본 객체의 b 속성을 변경해도 복사본에는 영향을 미치지 않습니다.