→ JavaScript는 총 6개의 원시 타입(number, string, boolean, null, undefined, symbol)과 1개의 객체 타입(object)을 가지고 있다.
→ 심볼(symbol) 타입도 6개의 원시 타입 중 하나로, ES6 버전의 JavaScript에서 새롭게 추가되었다.
→ 일반적으로 심볼 타입은 객체의 프로퍼티 키를 고유하게 설정함으로써 프로퍼티 키의 충돌을 방지하기 위해 사용된다.
→ 일반적으로 심볼은 객체의 프로퍼티 키로 사용된다.
자바스크립트는 객체의 property key로 오직 문자형과 실볼형만을 허용한다.(숫자형, 불린형 불가)
심볼(symbol)은 유일한 식별자(unique identifier)를 만들고싶을때 사용한다.
심볼은 문자형으로 자동형변환 되지 않는다. 필요하면 .toString()을 이용해서 명시적으로 메서드를 사용해야한다.
symbol을 이용하면 hidden property를 만들 수 있다.
ex) let user = { name : 'haesim', [id] : 3, }
symbol은 for in 으로 순회시 배제된다. => 심볼형 프로퍼티 숨기기(hiding symbolic property)라는 원칙으로 숨김 프로퍼티라는 개념이 성립하는 것임.
전역 심볼 레지스트리(global symbol registry) : String 키 값으로 접근할 수 잇는 심볼의 레지스트리(사전같은)
심볼을 처음 봤을 때, 이것을 언제 활용하기 위해 존재하는가… 라는 의구심이 들었는데, 다행히 모던 자바스크립트의 댓글에 나와 있었다.
노티피케이션 기능 구현시
api 상태 관련 변수 값 지정시
문제는, 현 시점에서 내가 실무에서도 이 Symbol을 활용할 이유가 없다는 점 ㅎㅎㅎ….
그래도 자바스크립트의 한 부분을 배웠다는 것에 의의를 두자!