Processing math: 100%
본문 바로가기
Program language/자바스크립트

자바스크립트를 통한 얇은 복사, 깊은 복사 확실하게 이해하기

by tankwoong 2023. 1. 30.
반응형

자바스크립트를 통한 얇은 복사, 깊은 복사 확실하게 이해하기 

얇은 복사과 깊은 복사 간단히 이해하기

얇은 복사, 깊은 복사를 공부하다가 머릿속에 한 번에 이해가 안돼서 고생을 했는데요. 제가 확실하게 이해한 바를 통해 오늘 확실히 짚고 넘어가 봐요. 

 

일단 결론부터 이야기하고 코드로 풀어볼게요.

일단 m1이라는 객체를 가르키는 변수가 있다고 해보죠. 

m1이라는 놈을 만들면 메모리 주소가 있겠죠? 그 메모리를 그 자체를 참조값이라고 해요. 

그럼 얇은 복사로 m2라는 놈을 복사했다고 가정해 보죠.

얇은 복사의 개념을 도입하면 얇은 복사를 하면 같은 메모리 주소 즉 참조값을 공유하게 되지요.

 

같은 참조값을 공유한다는 것은 어떤 특징이 있을까요? 하나의 값을 변경한다면 

다른 값도 변경될 수 있겠죠?  

 

반면에 깊은 복사는 다릅니다. 

아예 둘 다 새로운 객체값을 갖게 됩니다. 그러면 서로 값이 바뀌어도 독립적으로 존재할 수 있겠죠?

 

이것이 핵심이에요. 

 

얇은 복사는 서로 다른 객체가 복사를 하고 나면 같은 객체를 참조한다.

 

 

깊은 복사는 서로 다른 객체가 복사를 하고나면 서로 독립적인 객체를 참조한다. 

 

코드로 이해하기 

console.log로 실행했을 때 c2와 person이 동일한 값을 출력했다는 것을 확인할 수 있어요.

그 말은 곧 같은 객체를 참고한다는 것이죠.

 

2023.01.30 - [프로그래밍/자바스크립트] - Visual Studio code [node.js] 기본 세팅 및 "이전에 실행했던 파일이 계속 실행돼요"

 

Visual Studio code[node.js] 기본 세팅 및 "이전에 실행했던 파일이 계속 실행되요"

Visual Studio code[node.js] 기본 세팅 및 "이전에 실행했던 파일이 계속 실행되요" 더보기 기본 세팅 및 이전에 실행했던 파일이 계속 실행되는 문제 안녕하세요. developer Ethan입니다. 공부를 하면서 자

woonglab.com

반면 깊은 복사는 위에 있는 것처럼 아예 다른 객체를 참조하기 때문에 값을 변경해도 독립적으로 변경이 되요.

 얇은 복사와 깊은 복사를 이해하는데 꽤 오랜시간이 걸렸네요. 여러 분들은 꼭 쉽게 이해하셨으면 좋겠네요. 

읽어주셔서 감사합니다.

 

반응형