let original = {
start: "ABC",
end : "XYZ"
};
let copy = { ...original };
console.log( copy );
// 예상과 같이 다음과 같음.
// { start: 'ABC', end: 'XYZ' }
변환된 코드
var __assign = (this && this.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
var original = {
start: "ABC",
end: "XYZ"
};
var copy = __assign({}, original);
console.log(copy);
ES2017 Spread and Rest 를 지원함.
변환된 코드
객체를 merge 하는데 사용할 수도 있다.
동일한 property가 존재하는 경우 엎어 써버린다(override)
예상 했던 것 처럼 가장 뒤에 위치한 놈이 앞에 값들을 엎어쓰고 최종값이 된다.
값을 할당하는 경우에도 사용할 수 있음. (rest destructuring)
deep copy가 아님. shallow copy
nested 한 구조에서도 적용이 가능한데 가독성이 떨어지니 적당히 쓰자.