Shallow Copy (얕은 복사) 란?
const obj1 = {
a: 1,
b: 2,
c: 3
};
const obj2 = obj1;
console.log (obj1 === obj2)
obj2.a = 100;
console.log (obj1.a);
- 이처럼 객체를 직접 대입하는 경우 참조의 의한 할당이 이루어지므로 둘은 같은 데이터(주소)를 가지고 있다.
- 같은 데이터(주소)를 가지고 있기 때문에
obj2
의 property 를 수정하고 obj1
을 출력해도 obj2
값과 동일하다.
Deep Copy (깊은 복사) 란?
- 객체를 복사할 때, 객체가 가지고 있는 필드의 값을 복사한다.
- 이 때, 기본형 값들은 그대로 복사가 되며 참조형 변수의 경우 변수가 참조하는 객체에 대해서도 새롭게 복사해서 만들어진다.