데이터 원본을 그대로 수정한다면 의도치 않은 사이드 이펙트
를 방지하기위해서 데이터의 원본을 바로 수정하것은 지양하는 것이 좋습니다. 복사를 하여 카피본을 만들어서 사용하는 습관을 가지는것이 좋습니다.
const obj = {name: 'dale', age: 30, place: 'seoul'};
const objCopy1 = Object.assign({},obj) // Object.assign 메소드
const objCopy2 = {...obj} // ES6 스프레드 문법
구조 분해 할당
을 사용하거나 자바스크립트에서 지원하는 메소드 중에 delete
를 사용하면 객체 내 원하는 propery (key, value)를 삭제시킬수 있습니다. delete
사용하면 원본 객체의 데이터가 바뀌게 되어 복사후 사용하는것이 데이터 관리에 좋다고 생각합니다.
const obj = {name: 'dale', age: 30, place: 'seoul'};
/* 구조 분해 할당 */
const {name, ...rest} = obj; // name, ...rest(name을 제외한 property)
const result = {...rest} // { age: 30, place: 'seoul' }
/* 원본 */
obj // { name: 'dale', age: 30, place: 'seoul' }
const obj = {name: 'dale', age: 30, place: 'seoul'};
const objCopy1 = Object.assign({},obj)
const objCopy2 = {...obj}
delete objCopy1['name']
delete objCopy1['age']
objCopy1 // { place: 'seoul' }
delete objCopy2['age']
objCopy2 // { name: 'dale', place: 'seoul' }
/* 원본 데이터 */
obj // { name: 'dale', age: 30, place: 'seoul' }