[모던 JavaScript 튜토리얼] - [4.7] 심볼형(symbol)

IRISH·2024년 1월 29일
0

JS

목록 보기
47/80

학습 내용

→ JavaScript는 총 6개의 원시 타입(number, string, boolean, null, undefined, symbol)과 1개의 객체 타입(object)을 가지고 있다.

→ 심볼(symbol) 타입도 6개의 원시 타입 중 하나로, ES6 버전의 JavaScript에서 새롭게 추가되었다.

→ 일반적으로 심볼 타입은 객체의 프로퍼티 키를 고유하게 설정함으로써 프로퍼티 키의 충돌을 방지하기 위해 사용된다.

→ 일반적으로 심볼은 객체의 프로퍼티 키로 사용된다.

  1. 자바스크립트는 객체의 property key로 오직 문자형과 실볼형만을 허용한다.(숫자형, 불린형 불가)

  2. 심볼(symbol)은 유일한 식별자(unique identifier)를 만들고싶을때 사용한다.

  3. 심볼은 문자형으로 자동형변환 되지 않는다. 필요하면 .toString()을 이용해서 명시적으로 메서드를 사용해야한다.

  4. symbol을 이용하면 hidden property를 만들 수 있다.

  5. 객체 리터럴로 만들경우에 symbol형 키는 를 통하여 표현한다.

ex) let user = { name : 'haesim', [id] : 3, }

  1. symbol은 for in 으로 순회시 배제된다. => 심볼형 프로퍼티 숨기기(hiding symbolic property)라는 원칙으로 숨김 프로퍼티라는 개념이 성립하는 것임.

  2. 전역 심볼 레지스트리(global symbol registry) : String 키 값으로 접근할 수 잇는 심볼의 레지스트리(사전같은)

  • Symbol()을 사용하여 만들어지는 전역 심볼 객체를 말하는 것이 아니다!! 일반적인 글로벌스코프(global scope)가 아니라, 정말 찐 전체영역의 글로벌 스코프를 말함.
  • Symbol.for() / Symbol.keyFor()로 생성할 수 있음.
  1. 시스템 심볼(System symbol) 가지고 객체의 내부동작을 진행시킬 수 있다.

느낀점

심볼을 처음 봤을 때, 이것을 언제 활용하기 위해 존재하는가… 라는 의구심이 들었는데, 다행히 모던 자바스크립트의 댓글에 나와 있었다.

  1. 노티피케이션 기능 구현시

  2. api 상태 관련 변수 값 지정시

문제는, 현 시점에서 내가 실무에서도 이 Symbol을 활용할 이유가 없다는 점 ㅎㅎㅎ….

그래도 자바스크립트의 한 부분을 배웠다는 것에 의의를 두자!

profile
#Software Engineer #IRISH

0개의 댓글