본문 바로가기
Javascript

고차함수와 객체데이터 복제하기_Object.assign, spread연산자

by jennyiscoding 2022. 8. 8.

함수는 객체타입 변수의 불변성을 보장하지 않는다. 

function showName(obj) {
  obj.name = "박은비";
  console.log(obj);
}
// 객체타입은 불변성을 보장 못한다
const member = { name: "박금비" };
console.log(member);
showName(member);
console.log(member);

showName에서 접근하는 주소값과 전역에서 접근하는 주소값이 같기 때문에 데이터의 불변성이 없다. 

이것을 막기 위한 복제 기능은 두가지가 있다. 

1. Object.assign(복제하는법)

const member = { name: "박금비" };
// Object.assign 
function changeName2(obj) {
  let newObj = Object.assign({}, obj);
  newObj.name = "박은비";
  return newObj;
}
let obj2 = changeName2(member);
console.log(member); //박금비
console.log(obj2); //박은비

2. 스프레드 연산자를 사용하는 방법

const member = { name: "박금비", age: 18 };
function changeName(obj) {
  return { ...obj, name: "박은비" };
}
const newObj = changeName(member);
console.log("newObj = ", newObj); //박은비
console.log("member =", member); //박금비