[정리] 객체,배열 깊은 복사하기

2021. 2. 3. 10:29프로그래밍-Web/Javascript

요약: JS에서 깊은 복사를 하는 방법은 라이브러리를 사용하지 않는 이상, JSON을 사용하는 방법 뿐이다.

 

1. slice 메소드

 

- nested하지 않은 배열에서 얕은 복사를 수행

- 얕은 복사가 수행된다

 

 

2. spread operator

 

- 내부적으로 iterator-looping을 수행, 얕은 복사가 수행된다.

 

3. Object.assign

 

- object.assign은 첫번째 args에 두번째 value를 담는 것으로 복사를 수행한다.

- 얕은 복사가 수행된다.

 

 

4. JSON.parse와 JSON.stringify

 

- 객체를 문자열로 바꿨다가 그대로 담으므로 nested도 간단하게 복사 가능

- 객체를 문자열로 바꾼다는 것의 뜻은, primitive type을 다룬다는 것이고, 이 때문에 깊은 복사가 수행되는 것이다.

- 유일하게 깊은 복사가 수행된다. 그러나 성능이 구리다.