얕은 복사 얕보면 큰일 난다.
얕은 복사 (Shallow Copy)
얕은 복사는 객체의 최상위 속성만 복사하고, 중첩된 객체나 배열은 원본 객체와 참조를 공유합니다. 즉, 복사된 객체의 속성이 객체일 경우, 그 속성은 원본 객체의 속성과 동일한 참조를 가리킵니다.
const original = { a: 1, b: { c: 2 } };
// 얕은 복사
const shallowCopy = Object.assign({}, original);
// 원본 객체의 중첩된 속성 수정
shallowCopy.b.c = 3;
console.log(original.b.c); // 3 (원본 객체도 영향을 받음)
console.log(shallowCopy.b.c); // 3
깊은 복사 (Deep Copy)
깊은 복사는 객체의 모든 중첩된 속성을 재귀적으로 복사하여 새로운 객체를 생성합니다. 이 경우, 복사된 객체의 속성이 객체일 경우, 원본 객체와는 별개의 참조를 가집니다.
const original = { a: 1, b: { c: 2 } };
// 깊은 복사 (JSON 방법 사용)
const deepCopy = JSON.parse(JSON.stringify(original));
// 원본 객체의 중첩된 속성 수정
deepCopy.b.c = 3;
console.log(original.b.c); // 2 (원본 객체는 영향을 받지 않음)
console.log(deepCopy.b.c); // 3
'개발' 카테고리의 다른 글
js 스코프 및 화살표 함수 (0) | 2024.11.05 |
---|---|
js 함수 (0) | 2024.11.05 |
JavaScript 소개 (0) | 2024.11.04 |
CSS Animation (0) | 2024.11.01 |
클럭 [Clock] (0) | 2024.10.29 |
댓글