Web Basic · Collections

Symbol·Map·Set의 식별성 모델

Symbol, Map, Set은 객체와 배열로도 가능해 보이는 일을 더 명확한 식별성 규칙으로 다루게 해 주는 자료 구조다.

01

고유 key

라이브러리 내부 메타데이터처럼 외부 이름과 충돌하면 안 되는 필드에 Symbol을 쓴다.

02

키-값 저장

문자열 아닌 객체를 key로 삼아 관계를 저장해야 하면 Map을 선택한다.

03

중복 제거

Set은 같은 값이 한 번만 존재하도록 보장한다.

04

순회

Map과 Set은 삽입 순서를 유지하며 for...of로 순회할 수 있다.

Symbol
고유 속성 키 동일 설명을 써도 서로 다른 값
직렬화에는 보통 드러나지 않음
Map
유연한 key DOM node, 객체, 함수 등을 key로 저장
size와 clear가 명확
Set
집합 태그, id, 방문 여부 같은 중복 제거
객체 중복은 참조 기준
WeakMap
약한 참조 객체 key가 사라지면 GC 가능
순회 불가

key 타입 · 참조 비교 · 직렬화 점검

key 타입 문자열 key만 필요하면 plain object도 충분한지 본다.
참조 비교 내용이 같은 객체 두 개가 Set에서 다른 값으로 취급됨을 이해한다.
직렬화 Map과 Set은 JSON.stringify 결과를 별도 변환해야 한다.
메모리 DOM node나 객체를 key로 저장할 때 해제 정책을 둔다.