참조타입의 데이터 복사 = 값이 저장된 '메모리의 주소' 를 복사하는 것
: 참조 타입 데이터가 저장한 '메모리 주소 값' 을 복사하는 것을 의미
: 그렇기 때문에 복사된 변수를 수정하게 되면 원본 값에 영향을 줌
🎯 중첩객체가 존재하는 경우 해당 복사는 얕은복사로 이루어짐
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"}}
: 새로운 메모리 공간을 확보해 실제 값을 완전히 복사하는 것을 의미
: 복사된 변수와 원본은 다른 메모리 주소값을 가지고 있기 때문에 영향을 주지 못함
: 다시 말해 객체는 객체 안에 객체가 있을 경우에도 원본과의 참조가 완전히 끊어진 객체를 의미
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"}}