Shallow-Copy / Deep-Copy

김루루룽·2022년 8월 15일
0

blog✏️

목록 보기
34/61
post-thumbnail

Shallow copy



복사본에 영희를 다시 넣었을 때,
복사본은 영희로 바뀌고 원본인 aaa에 철수 그래도 있어야 한다.

객체를 복사해보자

분명 프로필2의 이름만 바꿨는데 원본의 이름도 바꼈다.

객체 복사

객체와 배열은 저장을 하면 주소값을 갖고 있다.


객체와 배열은 주소가 복사되어서 복사본이 수정되면 원본이 수정되는 것.
(같은 주소에 살고 있기 때문에)

그러면 어떻게 복사해야하나??

얕은 복사 실습.


중괄호를 만드는 순간 새로운 주소가 생긴다


이렇게 하면 name을 변경해도 원본이 같이 변경되지 않는다.

이래서 나온 것이 spread 연산자

spread 연산자


원본은 그대로 있고 profile3만 바뀐 모습을 볼 수 있다.
그렇지만 완벽할까 ??

스프레드 연산자로 복사한 뒤 프로필2의 취미1을 변경했는데
원본을 찍어보니 원본의 취미1도 바껴버렸다.


얕은 복사. shallow-copy
객체 안의 객체는 하지 못했다.

해결 방법은 ? 깊은 복사.

Deep-Copy

전체를 문자열로 만들어 놓고, 다시 그것을 객체로 바꾸면 될것같아!

JSON.parse

JSON.parse() : 문자열을 객체나 배열로 만들어 주는 것

JSON.stringify

JSON.stringify() : 객체나 배열을 스트링으로 바꿔준다.


프로필 2만 바뀐 모습을 볼 수 있다.

배열 복사

배열의 얕은 복사. 배열도 객체랑 똑같이 적용된다.

profile
1day 1push..plz

0개의 댓글