오늘 배운것
오늘 공부하며 고민한 문제는 얕은복사(swallow copy)와 깊은복사(deep copy)이다.
우선 자바스크립트의 복사에 대해서 제대로 된 이해가 필요했다.
일단 디테일이 아닌 전체에 대한 설명으로는.
얕은 복사는 객체의 레퍼런스(참조값 == 메모리에 접근이 아닌 객체가 담긴 주소에 접근)하는것이다.
반대로 깊은 복사는 객체 그자체의 value를 복제하는 것이다.
이것은 꽤나 차이가 크다.
얕은복사
- 복사가 된 객체의 인스턴스 변수는 원본객체의 주소를 참조한다.
- 그렇기에 완전한 복사가 아니면 주소에 할당된 값을 공유한다.
깊은복사
- 객체 자체의 메모리까지 복사하여 새로운 메모리에 할당하는 방식
- 기존 객체와의 연결이 끊겼다 표현하기도 하며 이것은 값은 같으나 완전히 새로운 것이다.
- for~in함수로 객체의 프로퍼티들을 추출하여 새로운 객체에 넣거나,
json.stringify를 사용하거나 Object.assign을 이용해 복사할수있다.