Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- AWS
- python
- Express
- EC2
- NanoHttpd
- it
- 백준
- nuxt
- TypeScript
- Jenkins
- Next
- 코딩테스트
- kotlin
- react-native
- toml
- 코테
- 개발
- 파이썬
- css
- Android
- spring boots
- docker
- 광고 id
- 티스토리챌린지
- nginx
- 오블완
- React
- chrome
- JavaScript
- 오퍼월
Archives
- Today
- Total
내맘대로 개발일지
깊은 복사(deep copy) vs 얕은 복사(shallow copy) 본문
최근에 깊은 복사와 얕은 복사에 대해 질문을 받았는데 생각보다 잘 알고있지 못해서
어버버 거렸던게 신경쓰여서 찾아보게 되었다 ㅎ
원래 알고있던 내용이라 "아 ~ 맞아맞아" 하는 내용도 있었고 "오 ~" 하는 새로운 내용도 있었다.
얕은 복사 (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 |