JavaScript 중급: 얕은 복사 vs 깊은 복사

이토니·2024년 1월 11일
0

JavaScript

목록 보기
14/33
post-thumbnail

얕은 복사 (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 등의 라이브러리를 이용해줄 수 있다.
profile
cool & soft codes

0개의 댓글