Symbol
2026년 5월 17일
- Symbol은 ES2015에서 도입된 원시 타입(Primitive Type)으로, 생성할 때마다 유일한(unique) 값을 반환한다.
Symbol()함수로 생성하며,new키워드를 사용하지 않는다.- 같은 설명 문자열을 넣어도 두 Symbol은 절대 같지 않다(
Symbol('id') !== Symbol('id')). - 주로 객체(Object)의 숨겨진 속성(Property) 키로 사용하거나 충돌 없는 상수 정의에 활용한다.
Symbol 생성
Symbol(description): 설명을 붙인 고유한 Symbol 생성 (설명은 디버깅용, 동등 비교에 영향 없음)Symbol.for(key): 전역 레지스트리에서 동일 key의 Symbol을 공유 (같은 key면 동일 Symbol)Symbol.keyFor(sym): 전역 레지스트리에 등록된 Symbol의 key 반환
JavaScript
객체 프로퍼티 키로 사용
- Symbol을 키로 사용하면
for...in,Object.keys(),JSON.stringify()에 노출되지 않아 "숨겨진 프로퍼티" 효과를 낸다. - 다른 라이브러리 코드와 키 충돌 없이 메타데이터를 저장할 때 유용하다.
JavaScript
잘 알려진 Symbol (Well-known Symbols)
Symbol.iterator: 객체(Object)를 이터러블(Iterable)로 만드는 이터레이터 메서드 정의. for...of와 스프레드에서 사용Symbol.toPrimitive: 객체(Object)를 원시 타입(Primitive Type)으로 변환할 때 호출Symbol.hasInstance:instanceof연산자 동작 커스터마이징
JavaScript