Miyeon

얕은 복사와 깊은 복사

2021-12-29JS

얕은 복사와 깊은 복사

프로퍼티 값으로 객체를 갖는 객체 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}까지 모두 복사해서 원시값처럼 완전한 복사본을 만든다.