[JavaScript] object.assign() - 얕은 복사

Suvina·2025년 1월 6일

JavaScript

목록 보기
20/28
post-thumbnail

깊은 복사는 여기서☑️

하나 이상의 객체를 합쳐서 새로운 객체를 만들거나, 기존 객체에 속성을 복사할 때 사용

✅ 사용법

Object.assign(target, ...sources);

target: 속성을 복사받을 객체 
sources: 복사할 데이터를 가지고 있는 객체들

1️⃣ 객체 합치기

const obj1 = { a:1, b:2 };
const obj2 = { b: 3, c: 4};

const result = Object.assign({}, obj1, obj2);
console.log(result); // { a: 1, b: 3, c: 4 }
  • 주의: 같은 키(b)가 있으면 뒤의 값(obj2의 값)이 덮어씀.

2️⃣ 객체 복사

const original = { a: 1, b: 2 };
const copy = Object.assign({}, original);

console.log(copy); // { a: 1, b: 2 }
console.log(copy === original); // false (서로 다른 객체임)
  • 빈 객체 {}에 original의 내용을 복사해서 완전히 독립적인 복사본을 만듦.

3️⃣ 기존 객체 수정

const target = { a: 1 };
const source = { b: 2 };

Object.assign(target, source);
console.log(target); // { a: 1, b: 2 }
  • target 객체가 바로 수정됨

⚠️ 주의할 점

1. 얕은 복사만 가능 :

  • 중첩된 객체(예: 객체 안의 객체)는 주소값만 복사됨
const obj = { a: { x: 1 } };
const copy = Object.assign({}, obj);

copy.a.x = 99;
console.log(obj.a.x); // 99
  • 중첩된 객체까지 복사하려면 "깊은 복사"를 해야함

2. 대상 객체 수정 :

  • 대상 객체가 직접 변경되므로, 원본을 유지하려면 반드시 빈 객체를 대상 객체로 사용해야 함
profile
개인공부

0개의 댓글