js - 객체 깊은 복사 쉽게 하는 법

박제영·2022년 8월 10일
0

js

목록 보기
2/3
const Image = {
  length: 8889,
  meta: {
    name: 'foo',
    type: '.jpg',
    device: {
      type: 'mobile',
      company: 'sam',
    },
  },
};

위와 같은 객체가 있을 때 객체가 중첩된 경우
어떻게 깊이 복사 할 것인가
라는 문제에 대해서

immer / lodash 같은 라이브러리를 쓰거나 아니면 재귀로 순회해서 객체를 복사하는
방법이 있다고 생각했는데

JSON.stringify를 사용하면 훨씬 간단하고 성능적인 이점도 있다는걸 알게되었다

function deepFreeze(object) {
 // 객체에 정의된 속성명을 추출
 var propNames = Object.getOwnPropertyNames(object);

 // 스스로를 동결하기 전에 속성을 동결
 for (let name of propNames) {
   let value = object[name];
   object[name] = value && typeof value === "object" ? deepFreeze(value) : value;
 }
 return Object.freeze(object);
}

이건 재귀적으로 탐색하는 경우에 응용할수 있는 코드

profile
개발 도중 만난 문제 해결을 서술하거나 기록 및 개인의 생각을 정리한 블로그

0개의 댓글