항상 대충 훑어보고 지나갔던, 얕은복사와 깊은복사에 대해서 알아보도록 하자.
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 얕은복사는 원본의 참조값만 복사하기 때문에 원본의 값이 변경되면 똑같이 변경이 된다.
얕은 복사는 주로 첫 번째 수준에서만 새로운 객체를 생성하고,
내부 객체들은 원본과 같은 객체를 참조합니다. 따라서 원본 객체의 내부 객체가 변경되면 얕은 복사된 객체도 영향을 받습니다.
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 깊은복사는 원본 내부 객체 값 자체를 복사하기 때문에 아무리 중간에 참조값이 변경 되어도, 깊은 복사값에는 변동이 없다.