Shallow Copy VS Deep Copy

전은평·2023년 3월 15일
0

참조타입의 데이터 복사 = 값이 저장된 '메모리의 주소' 를 복사하는 것

Shallow Copy(얕은 복사)

: 참조 타입 데이터가 저장한 '메모리 주소 값' 을 복사하는 것을 의미
: 그렇기 때문에 복사된 변수를 수정하게 되면 원본 값에 영향을 줌
🎯 중첩객체가 존재하는 경우 해당 복사는 얕은복사로 이루어짐

const object = {name:"짱구"}
const objectCopy = object
objectCopy.name = "철수"

console.log(object) // {name:"철수"}
console.log(objectCopy) // {name:"철수"}

// [2] 중접객체가 있는 경우 얕은 복사가 이루어짐
const object = {name:"짱구", hobby={one:"game",two:"swim"}}
const objectCopy = {...object}
objectCopy.name = "철수"
objectCopy.hobby.two = "cook"

console.log(object) // {name:"짱구", hobby={one:"game",two:"cook"}}
console.log(objectCopy) // {name:"철수", hobby={one:"game",two:"cook"}}

Deep Copy(깊은 복사)

: 새로운 메모리 공간을 확보해 실제 값을 완전히 복사하는 것을 의미
: 복사된 변수와 원본은 다른 메모리 주소값을 가지고 있기 때문에 영향을 주지 못함
: 다시 말해 객체는 객체 안에 객체가 있을 경우에도 원본과의 참조가 완전히 끊어진 객체를 의미

const object = {name:"짱구", hobby={one:"game",two:"swim"}}
const objectCopy = JSON.parse(JSON.stringify(object))
objectCopy.name = "철수"
objectCopy.hobby.two = "cook"

console.log(object) //	{name:"짱구", hobby={one:"game",two:"swim"}}
console.log(objectCopy) //  {name:"철수", hobby={one:"game",two:"cook"}}
profile
`아는 만큼 보인다` 라는 명언을 좋아합니다. 많이 배워서 많은 걸 볼 수 있는 개발자가 되고 싶습니다.

0개의 댓글