[JS] 얕은 복사와 깊은 복사, 그리고 참조

그래도 해야지·2023년 5월 22일
0

JavaScript

목록 보기
10/11
post-thumbnail

얕은 복사(shallow copy)

얕은 복사는 객체의 속성과 값을 복사하여 새로운 객체를 생성하는 것을 의미함
이때, 복사된 객체와 원본 객체는 서로 다른 메모리 주소를 가짐
하지만 만약 복사된 객체나 원본 객체가 객체나 배열인 경우, 내부의 객체나 배열은 참조 관계를 그대로 유지함
이는 복사된 객체와 원본 객체가 내부 객체나 배열을 같이 참조한다는 의미

간단하게 spread 문법을 사용했다고 생각하면 됨

// 얕은 복사 (spread 문법 사용)
let 복숭아 = {a:2}

let 딸기 = {...복숭아}

참조(reference)

참조는 객체나 배열을 다룰 때, 해당 객체나 배열이 저장된 메모리 주소를 참조하여 값을 읽거나 변경하는 것을 의미함
참조 방식은 객체나 배열의 크기가 큰 경우 메모리를 절약할 수 있음
하지만 참조 방식으로 다루는 객체나 배열은 같은 메모리 주소를 참조하기 때문에, 하나의 객체나 배열이 변경될 경우 다른 객체나 배열도 같이 변경될 수 있음

// 얕은 복사

const banana = {a:1,b:2} 

const apple = {...banana} 

banana === apple // false

//참조에 의한 복사

cosnt fruit = {a:1,b:2}

const orange = fruit

orange === fruit // true
// 참조
let 바나나 = {a:1}

let 사과 = 바나나

깊은 복사(Deep copy)

깊은 복사는 객체에 중첩되어 있는 객체까지 모두 복사해서 원시 값처럼 완전한 복사본을 만듬

객체의 중첩
객체의 중첩은 JavaScript에서 객체 내부에 다른 객체를 포함시키는 것을 의미함

const person = {
  name: 'John',
  age: 30,
  address: {
    city: 'New York',
    street: '123 Main St'
  }
};
// 깊은 복사
let 과일 = 1

let 꿀물 = 과일

0개의 댓글