깊은 복사와 얕은 복사의 차이

Verba volant, scripta manent·2021년 8월 21일
0

JS면접뽀시기

목록 보기
6/10

자바스크립트에는 원시값과 참조값, 두 가지의 값의 형태가 있다.
그 중에서 객체는 참조값인데, 이런 객체를 복사할 때 나타나는 차이점을 깊은 복사(Deep copy)와 얕은 복사(Shallow copy)의 차이 라고한다.

그럼 깊은 복사와 얕은 복사가 각각 어떤건지 알아보자.

깊은 복사(Deep copy)

객체가 중첩되어 있을 경우에도 내부 객체까지 모두 새로 생성되어 원본과의 참조가 완전히 끊어진 경우

원본과이 참조가 완전히 끊어졌기 때문에 각각의 메모리에 할당이 되어있어 복사된 A객체와 B객체 중 어느 하나를 수정해도 다른 객체에 영향을 미치지 않는다.

  • 재귀함수를 이용한 복사
  • JSON.stringify()
  • lodash라는 라이브러리 사용
  • 얕은 복사(Shallow copy)

    객채가 중첩되어 있을때 가장 상위 객체만 새로 생성되고 내부 객체들은 참조 관계인 경우

    같은 주소값을 가리키기 때문에 복사된 A객체와 B객체 중 어느 하나라도 수정하면 다른 객체에 영향을 미친다.

  • Object.assign()
  • Spread Operator
  • profile
    말은 사라지지만 기록은 남는다

    0개의 댓글