DOM Cache

DOM 상태 저장에 맞는 컬렉션 고르기

DOM 요소와 부가 상태를 연결할 때는 키가 문자열인지 객체인지, 순회가 필요한지, 요소 참조가 끊긴 뒤 GC 대상이 되어야 하는지 함께 본다.

브라우저 상태 저장 패턴

Map · Set
Symbol

충돌 방지 키

객체 프로퍼티 키가 문자열 이름과 충돌하지 않게 Symbol()을 쓴다.

Map

요소별 데이터

set, get, delete로 요소별 측정값이나 렌더 상태를 관리한다.

Set

중복 없는 목록

add, has, delete로 선택 id나 적용할 클래스 이름을 한 번만 보관한다.

WeakMap

GC 연동 저장

키는 객체만 가능하고 순회할 수 없지만, 요소 참조가 끊기면 연결 데이터도 GC 대상이 된다.

HTMLElement key Map.get Set.has WeakMap key GC 비관찰
누수 신호

제거된 DOM 노드가 Map 키에 계속 남아 있으면 메모리 누수가 된다. 순회가 필요 없고 키가 객체라면 WeakMap을 우선 검토한다.