Shallow Copy, Deep Copy

iadorora·2024년 11월 9일

daily record

목록 보기
22/27

얕은 복사 Shallow Copy

: 참조값을 복사

기존 객체의 주소를 그대로 참조하는 객체를 새로 만드는 것

복사한 객체의 값 변경 >> 기존 객체의 값도 변경!⭐

예제

var a = 1;
a = 2;
console.log(a); //2

해석

첫번째 줄 : 메모리 공간을 확보한 뒤, 다른 메모리 공간에 1을 할당하고 1이 저장된 주소를 a가 저장

두번째 줄 : 그 후에 2를 재할당할 때 1이 저장된 메모리 공간은 그대로 두고, 2를 저장할 메모리 공간을 추가로 확보한 뒤에 저장한 뒤에 그 공간의 주소를 a가 저장

깊은 복사 Deep Copy

: 실제값을 새로운 메모리 공간에 복사

객체에 중첩된 객체까지 모두 복사!⭐

Object.assign()

Object.assign(생성할 객체, ...복사할 객체);

전개연산자(Spread Operator)

생성할 객체 = {...복사할 객체} 생성할 배열 = [...배열]

JSON.parse && JSON.stringify

생성할 객체 = JSON.parse(JSON.stringify(복사할 객체));

용어 정리

기본형 (Primitive)

: 기본 자료형
ex) Number, String, Boolean, Null, Undefined ..

값을 복사 할 때 복사된 값을 다른 메모리에 할당 하기 때문에
원래의 값과 복사된 값이 서로에게 영향 x

참조형 (Reference)

: 메모리에 저장된 객체
ex) Object, Array, Function ..

변수가 객체의 주소를 가리키는 값이므로 복사된 값이 같은 값을 가리킴

profile
Archive

0개의 댓글