본문 바로가기
Language/JavaScript

[TIL] JavaScript - 얕은 복사, 깊은 복사

by pin9___9 2022. 11. 29.
728x90

원시 타입(Primitive type) VS 객체 타입(Object/Reference type)

얕은 복사와 깊은 복사에 대해서 이해하기 위해서 우선 자바스크립트 데이터 타입인 원시 타입과 객체 타입에 대해 이해해야 합니다. 우선 원시 타입은 Number, BigInt, String, Boolean, Null, Undefined, Symbol 7개의 타입이 있고, 그 외 모든 데이터는 객체 타입입니다.

얕은 복사(Shallow Copy)란?

객체를 복사할 때 위의 예제처럼 원래 값과 복사된 값이 같은 참조를 가리키고 있는 것을 말한다. 객체 안에 객체가 있을 경우 한 개의 객체라도 원본 객체를 참조하고 있다면 이를 얕은 복사라고 합니다.
  • 객체를 복사할 때, 해당 객체만 복사하여 새 객체를 생성합니다.
  • 복사된 객체의 인스턴스 변수는 원본 객체의 인스턴스 변수와 같은 메모리 주소를 참조하며 해당 메모리 주소의 값이 변경회면 다른 객체의 변수 값 역시 동일하게 변경됩니다.

 

깊은 복사(Deep Copy)란?

깊은 복사된 객체는 객체안에 객체가 있을 경우에도 원본과의 참조가 완전히 끊어진 객체를 말합니다.
  • 객체를 복사할 때 해당 객체와 인스턴스 변수까지 복사합니다.
  • 데이터 참조가 아닌 객체의 형태를 그대로 복사함으로써 한 객체가 변경되어도 다른 객체의 데이터에는 영향을 주지 않습니다.

 

마치며...

좀 더 이해하고 추가를 해야할 것 같습니다...

728x90

댓글