[기술면접] js 얕은 복사, 깊은 복사

nevermind·2022년 11월 15일
0

기술면접

목록 보기
4/25

* 얕은 복사

  • 객체를 직접 대입하는 경우에 참조에 의한 할당이 이루어져 같은 메모리 주소를 바라보는 것
  • 같은 데이터를 바라보기에 원본 객체 데이터의 값을 변동할 수 있다
const obj1 = { a: 1, b: 2};
const obj2 = obj1;
console.log( obj1 === obj2 ); // true

* 깊은 복사

  • 메모리 주소를 복사하여 바라보는 것이 아니라 아예 새로운 객체 안 속성만 복사해서 사용하는 법
  • spread 연산자나 Object.assign() 메소드를 통해 가능하지만 1depth까지 가능
  • 완벽히 깊은 복사를 하기 위해서는 ?
    - 재귀적으로 깊은 복사를 수행
    - lodash의 cloneDeep함수를 사용
    - JSON.parse()와 JSON.stringify() 함수 사용
const obj1 = { a:1, b:2 };
const obj2 = { ...obj };
obj2.a = 100;
console.log( obj1 === obj2 ) // false
console.log( obj1.a ) // 1

출처:https://hanamon.kr/javascript-shallow-copy-deep-copy/
profile
winwin

0개의 댓글