얕은복사
오브젝트를 복사하고 싶다고 하면
Object.assign()
을 호출하면 됨.근데
Object.assing()
을 하더라도 참조형 데이터는 새롭게 할당하는 것이 아니라 ref를 복사해서 넣음.즉, 새로운 메모리가 생성되는 것이 아니라, 같은 메모리 주소를 바라보고 있다.
따라서 한쪽에서 바꾸더라도 다른쪽의 데이터도 바뀌는 현상이 발생함.
이것을
얕은복사(shallow copy)
라고 한다.
깊은복사
참조형 데이터들까지 아예 새로운 메모리에 할당해서 값을 복사하면 얕은 복사의 문제가 해결된다.
오브젝트의 속성값들이 몇 depth까지 탈 지 모르므로 순회하면서 참조형 데이터에 대한 처리를 해야함.
이것을
깊은복사(deep copy)
라고 한다.깊은복사를 해야만 복사된 다른 오브젝트에 의해 값이 바뀌는 현상을 방지할 수 있다. (불변성 유지)

Lodash
라이브러리의 cloneDeep()
메소드를 통해 깊은복사 쉽게 가능.