Object.assign 메서드
Object.assign 메서드는 소스 객체의 속성과 값을 복사하여
새로운 객체를 반환합니다. 메서드의 첫 번째 매개변수에는
복사할 대상 객체를 지정하고,
두 번째 매개변수에는 복사해야 할 객체들을 지정합니다.
구문
Object.assign(복사 대상, 객체들);
예시
소스 객체로부터 새로운 객체를 얻어봅시다:
let obj = {'a': 1, 'b': 2, 'c': 3};
let newObj = Object.assign({}, obj);
console.log(newObj);
코드 실행 결과:
{a: 1, b: 2, c: 3}
예시
이번에는 매개변수에 쉼표로 구분하여 여러 개의 소스 객체를 나열하여 새로운 객체를 얻어봅시다:
let obj1 = {'a': 1, 'b': 2};
let obj2 = {'c': 3, 'd': 4};
let newObj = Object.assign({}, obj1, obj2);
console.log(newObj);
코드 실행 후, 두 개의 소스 객체가 하나의 새로운 객체로 병합된 것을 확인할 수 있습니다:
{a: 1, b: 2, c: 3, d: 4}
예시
배열도 그 타입이 객체에 속하기 때문에,
Object.assign 메서드를 사용하여
새로운 배열을 얻을 수도 있습니다.
소스 배열에서 요소를 복사하여 새로운 배열을 만들어봅시다:
let arr = [1, 2, 3, 4];
let newArr = Object.assign([], arr);
console.log(newArr);
코드 실행 결과:
[1, 2, 3, 4]
예시
Object.assign 메서드를 사용할 때는
구문을 주의 깊게 따라야 합니다.
예를 들어, 첫 번째 매개변수에 대상 객체를 추가하지 않고
복사할 객체만 남겨두면, 해당 객체가 그대로 반환됩니다:
let obj = {1:'a', 2: 'b', 3: 'c'};
let newObj = Object.assign(obj);
console.log(newObj === obj);
코드 실행 결과:
true
같이 보기
-
객체의 속성들로 이루어진 배열을 반환하는 메서드
Object.keys -
객체의 값들로 이루어진 배열을 반환하는 메서드
Object.values