상세 컨텐츠

본문 제목

[자바스크립트] 객체를 깊은복사하는방법 2가지 assign, json

카테고리 없음

by esoesmio 2023. 5. 4. 15:23

본문

assign이나 json으로 깊은복사를 해봐라

 

 

 

 

 

const obj1 = { 
  a: 1,
  b: {
    c: 2,
    d: 3
  }
};

const obj2 = Object.assign({}, obj1);

// obj1과 obj2는 서로 다른 객체
console.log(obj1.b === obj2.b); // true

// obj2.b를 변경해도 obj1.b에는 영향이 없음
obj2.b.c = 4;
console.log(obj1.b.c); // 2
console.log(obj2.b.c); // 4

 

 

 

const obj1 = { 
  a: 1,
  b: {
    c: 2,
    d: 3
  }
};

const obj2 = JSON.parse(JSON.stringify(obj1));

// obj1과 obj2는 서로 다른 객체
console.log(obj1.b === obj2.b); // false

// obj2.b를 변경해도 obj1.b에는 영향이 없음
obj2.b.c = 4;
console.log(obj1.b.c); // 2
console.log(obj2.b.c); // 4

위 두 가지 방법 중 첫 번째 방법이 일반적으로 더 빠르고 성능이 좋습니다. 하지만 깊은 복사를 수행할 때, 객체 내부에 함수나 undefined가 포함되어 있다면 복사되지 않는다는 한계가 있습니다. 따라서 객체 내부에 함수나 undefined가 포함되어 있다면 JSON 방법을 사용해야 합니다.

댓글 영역