최근에 깊은 복사와 얕은 복사에 대해 질문을 받았는데 생각보다 잘 알고있지 못해서
어버버 거렸던게 신경쓰여서 찾아보게 되었다 ㅎ
원래 알고있던 내용이라 "아 ~ 맞아맞아" 하는 내용도 있었고 "오 ~" 하는 새로운 내용도 있었다.
얕은 복사 (Shallow Copy)
- 얕은 복사는 원본 데이터의 최상위 레벨만을 복사한다.
- 중첩된 객체나 배열이 있다면, 해당 객체나 배열은 원본과 동일한 참조를 유지한다.
- Ex : 스프레드 연산자(...), 배열의 slice() 등
- 최상위 레벨의 객체나 배열은 새로운 객체나 배열로 복사한다.
깊은 복사 (Deep Copy):
- 깊은 복사는 원본 데이터의 모든 중첩된 객체와 배열을 재귀적으로 복사한다.
- 새로운 객체나 배열이 생성되며, 내부 구조를 변경해도 원본에 영향을 미치지 않는다.
- 중첩 구조가 복잡한 경우에 사용
만약 원본의 데이터가 변경돼었을 경우 같이 바뀌는 건 어떤것일까 ? 정답은 얕은 복사의 경우이다.
이유는 내부의 중첩된 객체나 배열은 원본과 동일한 참조를 유지하기 때문에
복사본과 원본이 같은 객체를 참조하므로 두 곳에서 변경이 반영 된다.
깊은 복사를 사용한 경우, 원본과 완전히 별개로 생성되므로 영향을 주지 않게 된다.
'IT' 카테고리의 다른 글
Docker 명령어 - Container 실행, 띄우기 (0) | 2024.03.29 |
---|---|
웹스톰, 인텔리제이 - 실행 취소, 복구 단축키 (0) | 2024.03.28 |
[IT] Web 페이지 로딩 하는 과정 (0) | 2023.12.19 |
[IT] 객체지향 개발의 5원칙 (SOLID 원칙) (0) | 2023.12.19 |
JPEG vs PNG - 클라우드에 왜 JPEG 를 업로드 하라는걸까 ? (1) | 2023.12.01 |