일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프로그래머스
- 배열
- craco
- ios
- 코드숨
- reactnative
- react-native-camera-roll
- 크라코
- 모던자바스크립트
- 리액트쿼리
- slice
- 유니온타입
- 타입스크립트
- 자바스크립트
- js
- react-hook-form
- Typescript
- 파스에러
- react-native
- 자료구조와알고리즘
- React
- Flipper
- javascript
- Android
- react-native-image-picker
- 리액트
- sort( )
- react-native-vision-camera
- 리액트네이티브
- 제네릭타입
Archives
- Today
- Total
KassyLog
얕은 복사와 깊은 복사 본문
객체를 프로퍼티 값으로 갖는 개체의 경우 얕은 복사는 한 단계까지만 복사하는 것을 말하고
깊은 복사는 객체에 중첩되어 있는 객체까지 모두 복사하는 것을 말한다.
객체를 대입하게 되면 참조에 의한 할당이 이루어지므로 (얕은 복사) 둘은 같은 객체이다.
const obj = { a: 1, b: 2}
const obj2 = obj
console.log(obj === obj2) // true
얕은 객체의 단점은 참조에 의한 할당이기때문에 내부 객체의 property 를 공유하게 된다.
const obj = { a:1, b:2 }
const obj2 = obj
obj2.a = 100
console.log(obj.a) // 100
원시값은 깊은 복사, 객체는 얕은 복사로 일어난다.
깊은 복사의 예시는 아래와 같다.
let num1 = 1;
let num2 = num1; //num2에는 1이라는 값이 들어간다.
//num2 에 num1 자체를 넣는다.
num2 = 2;
console.log(num1, num2)
//num1 : 1, num: 2
//num1 : 2, num: 2 <- 얕은 복사
얕은 복사와 깊은 복사로 생성된 객체는 원본과는 다른 객체다.
즉, 원본과 복사본은 참조 값이 다른 별개의 객체다. 하지만 얕은 복사는 객체에 중첩되어 있는 객체의 경우 참조 값을 복사하고 깊은 복사는 객체에 중첩되어 있는 객체까지 모두 복사해서 원시 값처럼 완전한 복사본을 만든다는 차이가 있다.
*참고 자료
'javascript' 카테고리의 다른 글
[모던 자바스크립트]함수와 일급 객체 (0) | 2023.01.22 |
---|---|
[모던 자바스크립트]클로저 (0) | 2023.01.21 |
문자열 자르기 (0) | 2023.01.18 |
[모던 자바스크립트]프로토타입 (0) | 2023.01.15 |
프로그래밍 에러 알아보기 (0) | 2023.01.12 |