열심히 케이크를 먹은적이 있습니다. 케이크를 퍼먹는것을 정말 좋아하는데, 때로는 크게, 때로는 적게 퍼먹었던 것 같습니다. 자바스크립트를 공부하면서 배열을 복사할 일이 있어서 아무 생각없이 복사했던 적이 있습니다.
const kim = [kim1, kim2, kim3]
con lee = kim;
이 경우는 얕은복사(SHALLOW COPY)라고 합니다.
하지만 이 경우 lee의 값을 바꾸었을 때 kim 의 값도 변경되는 일이 발생했습니다. 따라서 이런 경우에는 어떻게 해야하지? 라는 생각이 들었습니다.
그에 따른 답안은 깊은복사(DEEP COPY)를 통해 해결할 수 있습니다. DEEP COPY는 여러가지 방법이 있지만, 우선 머릿속에 완전히 적립이 된 ...rest를 사용해서 하는 깊은복사를 기록해보려고 합니다.
const obj1 = {a :1 , b:3}
const obj2 = {...obj1}
obj2
obj1 === obj2
이 경우 obj1 === obj2
의 값은 FALSE로 나오게 됩니다. 즉 같은 REFERENCED OBJECT를 공유하는게 아니라, 각각의 REFERENCED OBJECT가 생겼기 때문에 FALSE가 나온다고 보면 될 것 같습니다.
WRAP UP
얕은 복사: 같은 REFERENCED OBJECT를 가짐
깊은 복사 : 다른 REFERENCED OBJECT를 가짐