개발

깊은 복사 얕은 복사

explosion149 2024. 11. 5.

 

얕은 복사 얕보면 큰일 난다.

 

 

 

얕은 복사 (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

댓글

💲 추천 글