Dev./javascript
[JS] Object.assign, spread
인쥭
2022. 4. 20. 09:14
반응형
- JS의 객체를 저장하는 변수는 객체의 주소를 참조한다.
- Object.assign({}, target) 명령어는 새로운 객체를 만들고 원본 객체의 열거 가능한 속성을 복사한다.
- spread 연산자 ...도 마찬가지!
const origin = {
id: 0,
name: 'injuk',
age: '1',
};
// 참조를 복사하므로 두 객체는 같다.
const obj1 = origin;
check(obj1);
// 새로운 빈 객체를 만들고 원본의 속성을 복사하므로 두 객체는 다르다.
const obj2 = Object.assign({}, origin);
check(obj2);
// 새로운 객체를 만들고, 원본 객체에 새로운 객체의 속성을 복사하므로 두 객체는 같다.
const obj3 = Object.assign(origin, { temp: true });
check(obj3);
// 새로운 객체를 만들고 원본 객체의 속성을 복사하므로 두 객체는 다르다.
const obj4 = { ...origin };
check(obj4);
function check(target) {
console.log(origin === target);
}
/* 실행 결과
true
false
true
false
*/