얕은 복사 (shallow copy)
- A를 얕은 복사해서 B를 만들고, B를 변경하면 A에 있는 중첩된 부분이 따라서 변경된다.
spread operator, Object.assign, Array.from(), slice
를 사용할 수 있다.
+) 얕은 동결
- 객체를 동결하여 객체가 변경될 수 없게한다.
- 객체의 속성(값, 불변성, 설정 가능성, 작성 가능성)과 프로토타입이 변경되는 것을 방지해준다.
- but, 객체 안은 동결시키지 못한다.
Object.freeze():
따라서 얕은 복사나 얕은 동결은 중첩된 구조에서 올바른 역할을 수행하지 못한다.
깊은 복사 (Deep copy)
- 깊은 복사는 배열이나 객체로 중첩된 부분까지 처리해준다.
1) JSON.parse(JSON.stringify());
2) 중첩된 곳에 따로 spread operator를 사용해서 처리해줄 수도 있다. (...
)
3) lodash
, Ramda
등의 라이브러리를 이용해줄 수 있다.