
const haru2 = haru; → 얕은 복사(X) → 참조 복사const haru3 = Object.assign({}, haru); 또는 { ...haru } → 얕은 복사(O) JavaScript 자체 내장 메서드로는 진정한 깊은 복사(deep copy)는 제공되지 않음! (라이브러리를 사용하거나 로데쉬..., json을 통해 부분적으로 구현 가능하긴함
haru2 = haru;haru.age++ 하면 haru2.age도 같이 바뀝니다. const haru2 = haru;
haru.age++; // haru2.age도 같이 증가함
Object.assign({}, haru) 또는 { ...haru }haru 객체의 최상위 속성만 새 객체로 복사 예시:
const haru = { name: '하루', age: 5, pet: { type: 'dog' } };
const copy = { ...haru };
copy.pet.type = 'cat';
console.log(haru.pet.type); // 'cat' (내부 객체는 공유됨)
정리하면:
| 복사 방법 | 복사 종류 | 중첩 객체까지 복사? |
|---|---|---|
haru2 = haru | 참조 복사 | X (같은 객체 공유) |
Object.assign({}, haru) | 얕은 복사 | X |
{ ...haru } | 얕은 복사 | X |
JSON.parse(JSON.stringify()) | 깊은 복사 | O (단점 있음) |
lodash.cloneDeep() | 깊은 복사 | O |