얕은복사와 깊은복사
user라는 식별자를 가진 메모리가 생성되고 그 메모리는 오브젝트 메모리 주소값을 참조하게 됩니다.
이때 admin의 age값을 변경하게 되면 admin.age뿐만 아니라 user.age의 값 또한 변경되는것을 볼 수 있는데
이는 admin과 user가 서로 같은 오브젝트 메모리의 주소값을 참조하고 있기 때문입니다.
따라서 원래 의도했던 admin.age값만 27로 변경하고 싶을 경우에는
와 같이 얕은복사를 하게 되면 기존에 의도했던 admin.age의 값만 27로 변경되는걸 확인할 수 있습니다.
👀 주의할점
하지만 만약 위와 같이 object 안에 object가 있는 경우에는 user.sizes
와 admin.sizes
는 같은 메모리 주소값을 참조하게 됩니다.
이를 해결하기 위한 또 다른 방법이 바로 깊은복사입니다.
stringify
는 객체를 문자열로 변환하는데 이때 원본 객체와의 참조가 끊기게 됩니다.
이후 다시 parse
를 통해 문자열을 다시 객체로 변환시켜줌으로써 admin.sizes
와 user.sizes
는 같은 메모리 주소값을 참조하지 않게 됩니다.