객체를 쉽게 병합하는 assign 메서드 / Object.assign()

박동건·2019년 12월 3일
1

JavaScript

목록 보기
3/8

1. 정의

MDN문서에 따른 정의는 다음과 같다.

Object.assign() 메소드는 열거할 수 있는 하나 이상의 출처 객체로부터 대상 객체로 속성을 복사할 때 사용합니다. 대상 객체를 반환합니다.

  Object.assign(target, ...sources) // 객체 병합

2. 설명

// 예제1

var obj1 = {a:1};
var obj2 = {b:2};
var obj3 = {c:3};
var newObj = Object.assign({}, obj1, obj2, obj3);
console.log(newObj); // {a: 1, b: 2, c: 3}

타겟 인자에 빈 객체를 주고, 소스 인자에 각 객체들을 넘겨주면, 빈 객체에 병합이 된다.

// 예제2

var obj1 = {a:1};
var obj2 = {b:2};
var obj3 = {c:3};
var newObj = Object.assign(obj1, obj2, obj3);
console.log(newObj); // {a: 1, b: 2, c: 3}
console.log(obj1); // {a: 1, b: 2, c: 3}

타겟 인자에 기존에 존재하는 객체를 넘기면, 타겟에 넘긴 인자가 변질이 된다.

3. 정리

Object.assign의 메서드의 결과가 새로운 객체를 반환해야한다면, 타깃으로는 빈 객체를 주는 것을 잊지 말아야 한다.

MDN 설명에 의하면,

동일한 키가 존재할 경우 대상 객체의 속성은 출처 객체의 속성으로 덮어쓰여지고, 후에 출처의 속성은 이전의 출처의 속성과 유사하게 덮어쓰여진다고 한다.

4.참고문서

  1. https://pro-self-studier.tistory.com/21
  2. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
profile
박레고의 개발 블로그

0개의 댓글