728x90
원시 타입(Primitive type) VS 객체 타입(Object/Reference type)
얕은 복사와 깊은 복사에 대해서 이해하기 위해서 우선 자바스크립트 데이터 타입인 원시 타입과 객체 타입에 대해 이해해야 합니다. 우선 원시 타입은 Number, BigInt, String, Boolean, Null, Undefined, Symbol 7개의 타입이 있고, 그 외 모든 데이터는 객체 타입입니다.
얕은 복사(Shallow Copy)란?
객체를 복사할 때 위의 예제처럼 원래 값과 복사된 값이 같은 참조를 가리키고 있는 것을 말한다. 객체 안에 객체가 있을 경우 한 개의 객체라도 원본 객체를 참조하고 있다면 이를 얕은 복사라고 합니다.
- 객체를 복사할 때, 해당 객체만 복사하여 새 객체를 생성합니다.
- 복사된 객체의 인스턴스 변수는 원본 객체의 인스턴스 변수와 같은 메모리 주소를 참조하며 해당 메모리 주소의 값이 변경회면 다른 객체의 변수 값 역시 동일하게 변경됩니다.
깊은 복사(Deep Copy)란?
깊은 복사된 객체는 객체안에 객체가 있을 경우에도 원본과의 참조가 완전히 끊어진 객체를 말합니다.
- 객체를 복사할 때 해당 객체와 인스턴스 변수까지 복사합니다.
- 데이터 참조가 아닌 객체의 형태를 그대로 복사함으로써 한 객체가 변경되어도 다른 객체의 데이터에는 영향을 주지 않습니다.
728x90
'내일배움캠프 5주차 TIL' 카테고리의 다른 글
내일배움캠프 5-5 TIL(알고리즘) (0) | 2022.12.05 |
---|---|
내일배움캠프 5-4 TIL (숫자만 추출해내기) (1) | 2022.12.01 |
내일배움캠프 5주차 5-3 TIL (정규표현식) (0) | 2022.11.30 |
내일배움캠프 5주차 TIL (프로젝트 발표) (0) | 2022.11.28 |