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 |