Cute Bow Tie Hearts Blinking Pink Pointer

백엔드/Javascript

[Javascript] 얕은 복사, 깊은 복사

청포도 에이드 2022. 1. 7. 11:39
728x90

https://hanamon.kr/javascript-shallow-copy-deep-copy/

 

 

얕은 복사 vs 깊은 복사

 

 

[JavaScript] 얕은 복사(shallow copy) vs 깊은 복사(deep copy) - 하나몬

💡 얕은 복사(shallow copy) vs 깊은 복사(deep copy) ❗️얕은 복사(shallow copy)란? const obj1 = { a: 1, b: 2}; const obj2 = obj1; console.log( obj1 === obj2 ); // true 위의 예시처럼 객체를 직접 대입하는 경우 참조에 의

hanamon.kr

 

얕은 복사 : 주소값만 참조해주는 것. Object.assign()

즉, 같은 원본을 할당받기 때문에 하나의 내용 변경하면 다른 하나가 항상 같이 변함!

 

깊은 복사 :  주소값 아닌 그 안에 값을 복사해주는 것.

주소 값을 참조하는 것이 아니기때문에 같이 변하지 않음.

 

spread oprator : 요소 값을 가져오겠다 라는 뜻

 

사용 형식

 

const obj = { a:1, b:2 };
const obj2 = { ...obj1 };

 

 

 

깊은 복사의 함정..

spread oprator 사용해도 완벽한 깊은 복사는 아니다.

 

  • Object.assign() 메소드도 spread 연산자 둘 다 완벽한 Deep copy 되지 않는다.
  • 객체가 서로 다르다고 깊은 복사가 이루어진건 아니다.
  • 1 depth 까지는 확실하게 Deep copy.
  • 2 depth 이상이면 Shallow copy.

https://helloinyong.tistory.com/267

 

[2020.04.26] Javascript 깊은 복사의 함정... 모르고 사용하다 뒤통수 맞았다...

사이드 프로젝트 진행 중, 내게 엄청나게 스트레스를 안겨준 요소가 있었다. Javascript의 깊은 복사의 함정.. 우선 이 깊은 복사의 함정을 설명하기 위해서, Object 복사의 개념에 대해 간단히 설명

helloinyong.tistory.com

 

 

 

728x90