💡 Symbol
변경 불가능하며 중복되지 않는 유일무이한 값을 보장하는 기본형 데이터 타입입니다.
const s1 = Symbol('설명');
console.log(s1.description); // 설명
💡 전역 Symbol 레지스트리
생성된 Symbol 값을 관리하는 저장소입니다.
Symbol.for()
, Symbol.keyFor()
메서드로 접근할 수 있습니다.⬛ 객체의 프로퍼티 Key로 사용됩니다.
⬛ 다른 언어의 Enum을 흉내낼 때 사용합니다.
(Object.freeze( ) 와 Symbol을 이용해 Enum을 흉내낼 수 있습니다.)
⬛ JS의 표준 빌트인 객체에 프로퍼티를 추가할 때 사용합니다.
(똑같은 이름의 프로퍼티가 중복 추가되면 안 되기 때문입니다.)
⬛ 이름이 충돌할 위험이 없습니다.
⬛ 프로퍼티를 은닉할 수 있습니다.
for .. in 또는 Object.keys( ) 등으로 접근할 수 없기 때문입니다.
⬛ 값에 대한 설명 (description) 을 추가할 수 있습니다.
⬛ 생성된 Symbol 값을 외부에서는 알 수 없습니다.
⬛ Symbol.프로퍼티 호출 시 래퍼 객체가 임시 생성됩니다.
⬛ Symbol.for('키')로 전역 Symbol 레지스트리에서 키에 해당하는 Symbol 값을 검색할 수 있습니다.
⬛ Symbol.keyFor(심볼) 은 심볼의 key를 추출합니다.