얕은복사와 깊은복사

2026. 1. 15. 20:35·개발/CS(ComputerScience)

얕은 복사

object 속성이 다른 참조를 가지는 복사, 그러나 object 내의 속성중 object가 있을 경우 그 object는 같은 참조를 가진다. (객체 중첩)

const obj = { a: "a", b: { c: "c" } }
const shallowCopy = {...obj}
or
const shallowCopy = Object.assign({}, obj)

shallowCopy.a = "abc"
shallowCopy.b.c = "cba"

console.log(obj.a) // "a"
console.log(obj.b.c) // "cba"  

위처럼 얕은 복사로 인하여 같은 참조를 가지는 c 속성은 변경에 영향을 받는다

깊은 복사

위와 같은 참조 문제를 해결하려면 깊은 복사를 해야함. 가장 쉬운방법은 JSON.stringpy로 직렬화 한 이후에 parse로 다시 파싱하는 방법이 있다

const obj = { a: "a", b: { c: "c" } }
const deepCopy = JSON.parse(JSON.stringfy()obj)

deepCopy.a = "abc"
deepCopy.b.c = "cba"

console.log(obj.a) // "a"
console.log(obj.b.c) // "c"  

하지만 이 방식도 문제가 있는게 내부에 직렬화 불가한 속성(Symbol 같은)이 있을시 제대로된 처리가 이루어 지지 않는다.

최종 해결법은?

lodash 같은 라이브러리를 사용하는게 좋아보인다.

'개발 > CS(ComputerScience)' 카테고리의 다른 글

믹스인/트레잇  (0) 2026.01.23
고정소수점과 부동소수점  (0) 2026.01.14
'개발/CS(ComputerScience)' 카테고리의 다른 글
  • 믹스인/트레잇
  • 고정소수점과 부동소수점
inho_m
inho_m
남긴다는 행위로 얻는 것
  • inho_m
    inho_m 님의 블로그
    inho_m
  • 전체
    오늘
    어제
  • 링크

    • 깃허브
    • FE Trend
    • 군BTI
    • FACIT
    • 햄잇
    • 분류 전체보기 (24)
      • 개발 (20)
        • 리액트 (13)
        • 리액트 네이티브 (0)
        • 타입스크립트 (1)
        • CSS (0)
        • CS(ComputerScience) (3)
        • 기타 (3)
      • 사진 (1)
        • 배경 (0)
        • 인물 (0)
        • 기타 (0)
      • 여행 (0)
      • 맛집 (2)
      • 독서 (0)
        • 개발 (0)
        • 인생 (0)
      • 멍소리 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    sanitize
    Code Editor
    react 구글 번역
    octokit
    애플리케이션 구조
    react 압축
    react google translate restore
    Sandpack
    github rest api
    tailwind
    네트워크 관리사 2급 모의고사
    이대감곱창막창
    rss parser
    react 구글 번역 복원
    깃허브 액션
    rss-parser
    github pages vite 404
    fflate
    네트워크 관리사 2급 CBT
    girhub pages
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
inho_m
얕은복사와 깊은복사
상단으로

티스토리툴바