얕은복사와 깊은복사

developer.do·2023년 11월 15일
0

항상 대충 훑어보고 지나갔던, 얕은복사와 깊은복사에 대해서 알아보도록 하자.

먼저 얕은복사를 알아보자(Shallow Copy)

const originalObject = { a: 1, b: 2, c: { d: 3, e: 4 } };

const shallowCoppay = Object.assign({}, originalObject);  // 기존의 originalObject를 Shallow copy함

originalObject.c.d = 99;

console.log(originalObject, 'originObject'); // d : 99 

console.log(shallowCoppay, 'shallowCopy'); // d : 99 얕은복사는 원본의 참조값만 복사하기 때문에 원본의 값이 변경되면 똑같이 변경이 된다.




얕은 복사는 주로 첫 번째 수준에서만 새로운 객체를 생성하고, 
내부 객체들은 원본과 같은 객체를 참조합니다. 따라서 원본 객체의 내부 객체가 변경되면 얕은 복사된 객체도 영향을 받습니다.

깊은복사 (Deep Copy)

const originalObject = { a: 1, b:2, c: { d: 3, e: 4 } };

const deepCopy = JSON.parse(JSON.stringify(originalObject));

originalObject.c.d = 99;

console.log(originalObject, 'originalObject') // 99

console.log(deepCopy, 'deepCopy') // 3 깊은복사는 원본 내부 객체 값 자체를 복사하기 때문에 아무리 중간에 참조값이 변경 되어도, 깊은 복사값에는 변동이 없다.

0개의 댓글