얕은 복사와 깊은 복사
얕은 복사와 깊은 복사
프로퍼티 값으로 객체를 갖는 객체 a가 있다고 하자.
const a = { x: { y: 1 } };
얕은 복사로 복사하면 한 단계까지만 복사가 되고,
깊은 복사는 중첩되어 있는 객체까지 모두 복사하는 걸 말한다.
// 얕은 복사
const shallowCopy = { ...a };
console.log(shallowCopy === a); // false : 원본과 다른 참조값을 가진다
console.log(shallowCopy.x === a.x); // true
얕은 복사와 깊은 복사로 생성된 객체는 원본과 같은가?
아니다! 원본과 복사본은 참조 값이 다른 별개의 객체다.
그럼 얕은 복사와 깊은 복사의 차이는 무엇인가?
얕은 복사는 객체에 중첨되어 있는 객체 {y:1}
의 참조값을 복사하고
깊은 복사는 객체에 중첨되어 있는 객체{y:1}
까지 모두 복사해서 원시값처럼 완전한 복사본을 만든다.