logo

Object.create vs Object.assign

Chapter 18

40 조회

0 추천

244 단어

2분 예상

2024. 08. 19. 게시

luasenvy 작성

CC BY-NC-SA 4.0

Object.create

const newObj = Object.create({});
const nullObj = Object.create(null);

파라미터로 전달된 프로토타입을 갖는 새로운 객체를 만들어낸다. 결과만 보면 new Class()와 비슷하게 동작해서 혼동할 수 있지만 좀 더 다양한 사용법은 이 문서를 통하여 확인해볼 수 있다.

Object.assign

const newObj = Object.create({ A: 1, B: 2 });
const merged = Object.assign(newObj, { B: 3, C: 4 }); // { A: 1, B: 3, C: 4 }

const isSame = newObj === merged; // true

객체 2개를 인자로 받는데 1번 객체에 2번 객체를 병합하는 함수다. 2번 객체의 열거가능키가 있는한 모든 멤버를 첫 번째 인자의 객체로 복사한다. 복사할 때에는 값을 복사하기 때문에 깊은 복사deep copy를 원할 경우 다른 방법을 사용해야한다.1

Footnotes

  1. 주소도 값이므로 복사시 주소값이 복사된다.