Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트 Object.assign() 메서드란? 용도와 사용법 완벽 정리

Object.assign() 메서드는 하나 이상의 소스(source) 객체로부터 대상(target) 객체로 객체 자신의 열거 가능한(enumerable) 속성들을 모두 복사하는 데 사용됩니다. 복사가 완료되면 대상 객체를 그대로 반환합니다.

이 메서드는 객체 병합이나 얕은 복사(shallow copy)가 필요할 때 유용하게 활용됩니다. 아래 예제를 통해 동작 방식을 살펴보겠습니다.

사용 예제

const targetObj = { a: 1, b: 2 };
const sourceObj = { b: 4, c: 5 };
const returnedTarget = Object.assign(targetObj, sourceObj);
console.log(targetObj);
console.log(returnedTarget);
console.log(returnedTarget === targetObj);
console.log(sourceObj);

실행 결과

{ a: 1, b: 4, c: 5 }
{ a: 1, b: 4, c: 5 }
true
{ b: 4, c: 5 }

주요 특징 정리

  • 소스 객체는 변경되지 않습니다. 위 예제에서 sourceObj는 복사 후에도 원래 값인 { b: 4, c: 5 }를 그대로 유지합니다.

  • 반환값과 대상 객체는 동일한 참조입니다. returnedTarget === targetObjtrue를 반환하는 것에서 알 수 있듯이, Object.assign()은 새로운 객체를 생성하지 않고 대상 객체 자체를 수정한 후 반환합니다.

  • 열거 가능한 자체 속성만 복사합니다. Object.assign()은 상속된 속성이나 열거 불가능한 속성은 복사하지 않으며, 소스 객체에는 [[Get]], 대상 객체에는 [[Set]]을 사용하기 때문에 getter와 setter도 호출됩니다.

또한 여러 개의 소스 객체를 전달하면 뒤에 오는 객체일수록 같은 키에 대한 값이 우선 적용되므로, 속성 충돌 시 마지막 소스 객체의 값으로 덮어씌워진다는 점을 기억해 두면 좋습니다.