본문 바로가기

JS - Shallow Copy & Deep Copy (얕은 복사 & 깊은 복사) 본문

개발/JavaScript

JS - Shallow Copy & Deep Copy (얕은 복사 & 깊은 복사)

자전하는명왕성 2023. 1. 11. 11:46

Shallow Copy & Deep Copy (얕은 복사 & 깊은  복사)

  • 얕은 복사 : 객체의 주소값(참조값)까지만 복사
  • 깊은 복사 : 객체의 실제 값까지 복사 // 객체 안에 객체가 있을 경우에도 원본과의 참조가 완전히 끊어진 객체를 말함

 

이중 객체나 이중 배열로 이루어진 경우, 얕은 복사로는 원하는 복사가 되지 않으니, 깊은 복사를 활용해줄 필요가 있다.

깊은 복사

let origin = {
	name : "otter", 
	favoriteFood : {
		first : "sushi",
        second : "hamburger" }
     }

라고 한다면, 
const copy = JSON.stringify(origin)
const deepCopy = JSON.parse(copy)
하는 형태로 깊은 복사를 해줄 수 있음

JSON 포멧을 사용하는 방식

JSON.stringify & JSON.parse

위와 같이 JSON(JavaScript Object Notation) 포멧을 사용하여, 

1. stringify 하여 문자열화 시켜준 뒤,

** 이때 copy 가 갖는 값은 객체처럼 보이나, '문자열화'되어 있는 상태임

2. parse 를 사용하여 정상적인 데이터형식으로 만들어줌

이 경우 기존 참조값과 연결이 끊어진 깊은 복사가 완료되었다고 볼 수 있음

 

Comments