2차 공부/TIL

24.05.04 얕은 복사와 깊은 복사

공대탈출 2024. 5. 4. 23:03

얕은 복사 : 복사할 때 원본의 참조 값(주소 값)을 복사한다.

깊은 복사 : 복사할 때 원본의 실제 값을 복사한다.

위 그림과 같이 깊은 복사는 원 데이터를 복사한 것이고, 얕은 복사는 원본 값의 주소값을 복사해간 것이다.

얕은 복사는 원본 참조(주소)값을 복사해 간 것으로, 복사된 값에 변화를 주어도 원본값이 변하게되므로, 원본데이터의 변화를 주게 되어 조심해야한다.

 

얕은 복사

얕은 복사를 하는 방법은 다음과 같다.

//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

 

shallow copy, deep copy(JS)

알고리즘 문제를 풀면서 자주 겪게 되는 얕은 복사와 깊은 복사에 대해 정리하고자 한다.

jonghyun-park.medium.com

 

'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 객체  (2) 2024.05.01