뚜sh뚜sh

[모던 JavaScript] 4.2 참조에 의한 객체 복사 본문

Language/JavaScript

[모던 JavaScript] 4.2 참조에 의한 객체 복사

뚜sh뚜sh 2023. 1. 27. 16:46

참조에 의한 객체 복사

- 객체와 원시 타입의 근본적인 차이 중 하나는 객체는 '참조에 의해' 저장되고 복사된다는 것이고 원시값(문자열, 숫자, 불린 값)은 '값 그대로' 저장,할당되고 복사됨

 

 

 

객체의 동작 방식

let user = {
  name: "John"
};

- 변수엔 객체가 그대로 저장되는 것이 아니라, 객체가 저장되어 있는 '메모리 주소'인 객체에 대한 '참조 값'이 저장됨

- 객체는 메모리 내 어딘가에 저장되고, 변수 user엔 객체를 '참조'할 수 있는 값이 저장됨

- 따라서 객체가 할당된 변수를 복사할 땐 객체의 참조 값이 복사되고 객체는 복사되지 않음

 

 

 

객체 복사, 병합과 Object.assign

Object.assign(dest, [src1, src2, src3...])

- 첫 번째 인수 dest는 목표로 하는 객체

- 이어지는 인수 src1, ..., srcN은 복사하고자 하는 객체임

- 객체 src1, ..., srcN의 프로퍼티를 dest에 복사함

- dest를 제외한 인수(객체)의 프로퍼티 전부가 첫 번째 인수(객체)로 복사됨

- 마지막으로 dest를 반환함

let user = { name: "John" };

let permissions1 = { canView: true };
let permissions2 = { canEdit: true };

// permissions1과 permissions2의 프로퍼티를 user로 복사합니다.
Object.assign(user, permissions1, permissions2);

// now user = { name: "John", canView: true, canEdit: true }

 

Comments