JavaScript Object.assign()은 객체를 병합하는 데 사용되는 메소드입니다. 이 메소드를 사용하면 하나 이상의 객체를 대상 객체로 병합하여 대상 객체를 업데이트하거나 새 객체를 생성할 수 있습니다.

JavaScript 객체란?

JavaScript 객체는 키와 값 쌍의 집합으로 구성됩니다. 이러한 쌍을 속성(property) 또는 멤버(member)라고도 합니다. 객체는 중괄호({})로 묶인 속성 목록으로 정의됩니다.

예를 들어, 다음과 같이 개체를 정의할 수 있습니다.

let person = {
  name: 'John',
  age: 30
};

JavaScript Object.assign() 메소드란?

Object.assign() 메소드는 대상 객체와 하나 이상의 출처 객체를 받아서 대상 객체를 업데이트하거나 새 객체를 반환합니다. 대상 객체는 첫 번째 매개 변수로 지정되며, 출처 객체는 두 번째 이후 매개 변수로 지정됩니다. 대상 객체는 출처 객체의 속성을 상속받으며, 동일한 속성 이름을 가진 출처 객체의 속성은 대상 객체의 속성으로 덮어씁니다.

예를 들어, 다음과 같이 대상 객체와 출처 객체를 정의할 수 있습니다.

let target = { a: 1, b: 2 };
let source = { b: 4, c: 5 };

다음과 같이 Object.assign() 메소드를 사용하여 대상 객체를 업데이트하거나 새 객체를 반환할 수 있습니다.

let result = Object.assign(target, source);

console.log(target); // { a: 1, b: 4, c: 5 }
console.log(result); // { a: 1, b: 4, c: 5 }

이 예제에서는 대상 객체(target)와 출처 객체(source)가 정의됩니다. Object.assign() 메소드는 대상 객체에 출처 객체의 속성을 병합합니다. 이 때, 대상 객체와 출처 객체가 동일한 속성(b)을 가질 경우, 출처 객체의 속성이 대상 객체의 속성으로 덮어씁니다. 최종적으로 업데이트된 대상 객체는 target과 result 두 변수 모두에서 사용할 수 있습니다.

객체 병합에 대한 더 많은 예제를 살펴보겠습니다.

예제 1: 객체의 속성 병합

다음 예제에서는 두 개의 객체를 병합하여 새 객체를 생성합니다.

let person = { name: 'John', age: 30 };
let info = { occupation: 'teacher', location: 'New York' };

let profile = Object.assign(person, info);

console.log(profile); // { name: 'John', age: 30, occupation: 'teacher', location: 'New York' }

이 예제에서는 person과 info 두 객체를 병합하여 새 객체 profile을 생성합니다. Object.assign() 메소드를 사용하여 person 객체에 info 객체의 속성을 추가합니다. 새로운 profile 객체는 person 객체와 info 객체의 속성을 모두 포함하고 있습니다.

예제 2: 객체의 속성 갱신

다음 예제에서는 두 개의 객체를 병합하여 대상 객체를 업데이트합니다.

let target = { a: 1, b: 2 };
let source = { b: 4, c: 5 };

Object.assign(target, source);

console.log(target); // { a: 1, b: 4, c: 5 }

이 예제에서는 target과 source 두 객체를 병합하여 target 객체를 업데이트합니다. Object.assign() 메소드를 사용하여 target 객체에 source 객체의 속성을 추가합니다. b 속성의 값은 출처 객체인 source의 값으로 대체됩니다.

예제 3: 객체의 속성 복제

다음 예제에서는 대상 객체를 복제하여 새 객체를 생성합니다.

let source = { a: 1, b: 2 };
let clone = Object.assign({}, source);

console.log(clone); // { a: 1, b: 2 }

이 예제에서는 source 객체를 복제하여 새 객체 clone을 생성합니다. Object.assign() 메소드를 사용하여 빈 객체를 대상 객체로 지정하면 source 객체를 복제할 수 있습니다. 새로운 clone 객체는 source 객체와 동일한 속성을 가지고 있습니다.

FAQ

  1. Object.assign() 메소드를 사용할 때 출처 객체가 여러 개인 경우, 어떤 출처 객체의 속성이 우선적으로 사용될까요?
  • Object.assign() 메소드는 출처 객체가 왼쪽에서 오른쪽으로 평가되므로, 마지막 출처 객체의 속성이 우선적으로 사용됩니다.
  1. Object.assign() 메소드를 사용하여 병합한 객체는 어떻게 업데이트할 수 있나요?
  • 병합된 객체는 일반 객체와 마찬가지로 속성을 직접 업데이트하거나, Object.assign() 메소드를 사용하여 업데이트할 수 있습니다.
  1. Object.assign() 메소드를 사용할 때 객체를 복제할 수 있나요?
  • Object.assign() 메소드는 대상 객체를 업데이트하는 것 외에도, 새 객체를 생성하여 반환할 수 있습니다. 대상 객체의 복제본을 생성하려면 빈 객체를 대상 객체로 지정하면 됩니다.
  1. Object.assign() 메소드를 사용할 때 어떤 속성이 복제되지 않나요?
  • Object.assign() 메소드는 속성의 값을 복제하는 것이므로, 속성의 열거 가능 여부와 속성 설명자를 복제하지 않습니다. 또한, Object.assign() 메소드는 상속된 속성을 복제하지 않습니다.
  1. Object.assign() 메소드를 사용할 때 객체 내부의 객체는 어떻게 처리되나요?
  • Object.assign() 메소드는 객체 내부의 객체에 대한 참조를 복사하므로, 내부 객체가 수정되면 대상 객체와 출처 객체 모두에 영향을 미칩니다.

By 디지털노마드

치앙마이에 거주하며 태국 비자·은행·환전·집구하기를 직접 겪고 정리하는 운영자. 태국 생활 실전 정보를 씁니다.