얕은 복사 : 복사할 때 원본의 참조 값(주소 값)을 복사한다.
깊은 복사 : 복사할 때 원본의 실제 값을 복사한다.
위 그림과 같이 깊은 복사는 원 데이터를 복사한 것이고, 얕은 복사는 원본 값의 주소값을 복사해간 것이다.
얕은 복사는 원본 참조(주소)값을 복사해 간 것으로, 복사된 값에 변화를 주어도 원본값이 변하게되므로, 원본데이터의 변화를 주게 되어 조심해야한다.
얕은 복사
얕은 복사를 하는 방법은 다음과 같다.
//JSON.stringfy, JSON.parse 이용
let origin = [1,2,3];
let copy = JSON.parse(JSON.stringfy(origin))
//lodash 라이브러리 이용
//전개연산자 이용
let origin = {a:1, b:2, c:3}
let copy = {...origin}
//Array.prototype.slice 이용 (배열)
let origin = [1,2,3]
let copy = origin.slice()
//Object.assign 이용 (객체)
let origin = {a:1, b:2, C:3}
let copy = Object.assign({}, origin)
참고자료
https://jonghyun-park.medium.com/shallow-copy-deep-copy-js-e428846ef0b7
'2차 공부 > TIL' 카테고리의 다른 글
JSX에서 지켜야 할 5가지 (0) | 2024.05.14 |
---|---|
24.05.05 프레임워크와 라이브러리의 차이 (0) | 2024.05.05 |
24.05.03 String 객체, Math 객체 (0) | 2024.05.03 |
24.05.02 Number 객체 (0) | 2024.05.02 |
24.05.01 객체 (0) | 2024.05.01 |