관리 메뉴

CASSIE'S BLOG

[슈퍼코딩] 13강 복습 (얕은 복사, 깊은 복사) 본문

PROGRAMMING/슈퍼코딩 강의 정리

[슈퍼코딩] 13강 복습 (얕은 복사, 깊은 복사)

ITSCASSIE1107 2023. 10. 13. 12:19

원시타입은 콜 스택에 저장이 된다.
콜스택에 실행컨텍스트가 쌓이는거다.

객체타입은 힙에 저장이 된다.

assign 메소드 vs code에서 손가락 딱 올리면 그 메소드에 대해서 설명해준다.

인자가 2개고 target이고 source인데 2개의 객체를 받아서 합치는거다.

profile2값에 의존하지않는다라는데?

const profile2 = {
    address: ‘Seoul’,
    family: [‘Tony’, ‘Chris’]
}

const profile2Copy = Object.assign({}, profile);

{} 빈객체랑 profile객체를 붙인다.

 



profile2.address = ‘Daegu’;
console.log(profile2);
console.log(profile2Copy);

대구가 콘솔에 먼저 출력
서울이 그 다음 콘솔에출력됨

profile2Copy는 profile2 값에 의존하지않고 서울값을 그대로 갖는다.

이런 식으로 객체의 값을 복사할 수 있다. 이걸 얕은 복사라고 함,

배열도 객체다.



profile2Copy.family.push(‘Levin’);

얕은 복사 Object.assign() 메소드를 사용한다. 


얕은복사는 객체의 첫 번째 프로퍼티 까지만 복사한다, (very impo, 원시타입일 때 첫 번째 프로퍼티가)

근데 중첩된 객체일 때
배열도 객체잖아 복사하면 메모리 주소가 복사되서 우리가 원하던 대로 복사가 안된다.

깊은 복사
방법은 많음
도구 써야함 lodash

앞으로 많이 쓸 lodash
유틸리티성 모듈,기능을 lodash 라이브러리 통해서 작업하면 쉽게 가능하다.


Lodash관례
_. 이렇게 시작한데
deepclone 할 수 있는 함수가 있데
라이브러리라서 공식 문서 있음
_.clonedeep(value);



반응형