오늘은 모던 JavaScript 튜토리얼에서 위크맵과 위크셋(https://ko.javascript.info/weakmap-weakset)에 대하여 공부했다. 작성한 질문은 다음과 같다.
맵과 위크맵의 차이는 다음과 같다.
- 맵은 키로 모든 자료형이 가능하지만, 위크맵은 키로 오직 객체만 가능하다.
- 위크맵은 반복 작업과 keys(), values(), entries() 메소드를 사용할 수 없다. 따라서, 키나 값을 전체로 받을 수 없다. 왜냐하면, 가비지 컬렉션의 동작 방식 때문이다. 맵에서 키가 객체인 데이터 혹은 셋에서 값의 자료형이 객체인 경우, 참조값을 지워도 지워지지 않은 채로 계속 참조할 수 있기 때문에 이러한 문제를 해결하고자 나온 것이 위크맵과 위크셋이고 가비지 컬렉션의 동작 시점은 자바스크립트 엔진이 결정기에 가비지 컬렉션이 언제 동작할지 사용자는 모를 수밖에 없다.
위크셋을 만들 때, 주의해야 할 사항은 셋의 특징과 맵과 위크맵의 차이를 떠올리면 된다. 간단하다. 자료형이 객체인 데이터만 저장이 가능하다.
위크맵과 위크셋을 처음 공부할 때, 맵과 셋도 제대로 와닿지 않은 상태로 공부해서 집중이 잘 안 되었고 복습할 때도 처음 보는 것 같은 느낌을 받았는데 하나하나 차근차근 공부해가면서 맵과 셋을 공부한 다음 위크맵과 위크셋을 다시 보니 이래서 위크맵과 위크셋을 공부해야 하는구나라고 스스로 깨닫게 되었다. 위크맵과 위크셋은 추가 데이터를 다룰 때 가장 큰 이점을 갖는다. 어떠한 객체가 살아있을 때만 필요한 데이터가 객체가 필요 없어지면 이에 따른 데이터들도 제거가 필요할 때 사용하기 가장 좋다는 특징을 배웠기에 나중에 비슷한 고민을 하게 된다면 위크맵과 위크셋을 오늘부로 떠올릴 수 있을 것 같다.
'TIL' 카테고리의 다른 글
TIL - 20220709 (0) | 2022.07.09 |
---|---|
TIL - 20220708 (0) | 2022.07.08 |
TIL - 20220706 (0) | 2022.07.06 |
TIL - 20220705 (0) | 2022.07.05 |
TIL - 20220704 (0) | 2022.07.04 |