[JavaScript] WeakMap vs Map vs Object

김현조·2022년 7월 5일
0

모두 key: value 데이터 구조

  • Map은 default key라는 개념이 없지만 Object는 prototype을 가지므로 이미 뭐가 있다. 직접 키 넣을 때 조심해야함
  • Map의 키로는 뭐든지 올 수 있다(function, object, 원시값 등등) but Object는 string or symbol만 키값으로 사용 가능
  • Map의 key는 들어간 순서대로 나열되어있지만 object는 기본적으로 순서가 없다. (지금은 순서가 있지만 의존하기엔 어렵다)
  • Map이 key-value pair add, remove에 최적화됨
  • Map은 Iterable이고 object는 아님

WeakMap은 key로 Object, value로 아무거나

WeakMap은 키 객체의 약한 참조만 가지므로 가비지 컬렉션에 포함될 수 있고 이에 키 참조가 사라짐 but key 열거 불가능

WeakMap의 키로 쓰인 객체는 가비지 컬렉션 대상이 된다. 프로그램 내 객체에 대한 참조가 WeakMap
을 제외하고 존재하지 않는다면, 해당 객체는 가비지로 수거된다.

따라서 메모리 누수가 발생하기 좋은 부분에 사용하기 용이하다.

참고

https://ui.toast.com/weekly-pick/ko_20210901

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

profile
와호~!🎢 (이전 블로그: https://blog.naver.com/tulip23)

0개의 댓글