Javascript

Object.assign 의 사용법

땅개발자 2022. 6. 19. 20:55

Object는 참조복사

const output = (obj: {}) => {
  console.log(JSON.stringify(obj, null, 2));
};

const change = (obj: any) => {
  obj['xxx'] = 1;
};

const objectA = {
  aaa: 10,
  bbb: 5,
};

output(objectA);
// {
//   "aaa": 10,
//   "bbb": 5
// }

change(objectA);

output(objectA);
// {
//   "aaa": 10,
//   "bbb": 5,
//   "xxx": 1
// }

Object.assign 의 복사

const output = (obj: {}) => {
  console.log(JSON.stringify(obj, null, 2));
};

const change = (obj: any) => {
  obj['xxx'] = 1;
};

const objectA = {
  aaa: 10,
  bbb: 5,
};

output(objectA);
// {
//   "aaa": 10,
//   "bbb": 5
// }

change(Object.assign({}, objectA));
--> 별도의 배열을 파라메터로 전달한다. 

output(objectA);
// {
//   "aaa": 10,
//   "bbb": 5,
// }

Object.assign 의 Merge

첫번째 파라메터에 두번째 이후의 파라메터를 Merge할 경우에 사용한다.

복사를 하고 싶을 경우엔, 첫번째 파라메터에 {} 를 지정한다.

const output = (obj: object) => {
  console.log(JSON.stringify(obj, null, 2));
};

const objectA = {
  aaa: 10,
  bbb: 5,
};
const objectB = {
  aaa: 20,
  ccc: 3,
};

output(Object.assign(objectA, objectB));
// {
//   "aaa": 20,
//   "bbb": 5,
//   "ccc": 3
// }

output(objectA);
// {
//   "aaa": 20,
//   "bbb": 5,
//   "ccc": 3
// }

output(objectB);
// {
//   "aaa": 20,
//   "ccc": 3
// }