Object.assign()
은 Javascript에서 객체를 병합하거나 복사할 때 사용되는 메서드다. 이 메서드를 사용하면 하나 이상의 소스 객체의 속성을 타깃 객체로 복사할 수 있다. 즉, 소스 객체의 속성을 타깃 객체에 병합하거나 덮어쓰는 역할을 수행한다.
Object.assign(target, ...sources)
의 형태로 사용되고, 첫 번째 인수인 target
은 병합된 결과가 지정될 대상 객체이다. 나머지 인수는 하나 이상의 소스 객체로, 이들의 속성이 target
에 복사된다.
const target = [];
const source1 = { a: 1 };
const source2 = { b: 2 };
Object.assign(target, source1, source2);
console.log(target); // { a: 1, b: 2 }
위 코드처럼 target
객체에 source1
과 source2
객체의 속성이 병홥되어 들어간다. 만약 동일한 속성이 이미 target
에 존재한다면, 해당 속성은 마지막 객체에 있는 값으로 덮어쓰이게 된다.
Object.assgin()
은 새로운 객체를 생성하지 않고 기존 객체를 수정하는 작업이며, 얄은 복사 (shallow copy) 를 수행한다.
중첩된 객체의 경우에는 내부 객체의 참조가 복사되어 주의가 필요하다. 만약 깊은 복사 (deep copy) 를 수행하려면 다른 방법이 필요하다.
const source = { nested: { a: 1 } };
const target = {};
Object.assign(target, source);
console.log(target); // { nested: { a: 1} }
source.nested.a = 2;
console.log(tartget); // { nested: { a: 2 } }
즉, Object.assign()
은 객체를 병합하거나 복사하기 위한 메서드로서, 여러 개의 소스 객체를 하나의 target
객체로 합치는 역할을 한다.
좋은 정보 감사합니다