얕복 깊복

null·2022년 8월 7일
0
//얕복 케이스
const a = [{name: jonny, age: 10}];
const clone = [...a];
clone[0].name = 'greenwood';

console.log(a); // name: greenwood....

//깁복 케이스
const a = {name: jonny, age: 10};
const clone = [...a];
clone.name = 'greenwood';

console.log(a); // name: jonny;
console.log(clone); // name: greenwood;

1번 케이스의 경우 배열안에 중첩된 객체를 가지고 있다.
얕은 복사는 데이터가 중첩된 것은 복사하지 않고 가장 상위의 객체만 복사한다. 즉 원본 객체와 같은 메모리를 참조한다는 것..
그래서 원본도 변함

그러나 그냥 객체의 경우 상위 객체 뿐만 아니라 중첩된 객체까지 다 복사를 그렇기 때문에 원본가 다른 메모리가 생성 그래서 충돌 안 나는 것.

전개 연산자 혹은 assign()은 위와 같이 댐.

그러나 JSON.parse는 중첩과 상관없이 무조건 깊은 복사.

profile
개발이 싫어.

0개의 댓글