Javascript Symbol에 대하여..

승훈·2022년 9월 8일
0

Symbol

심볼은 객체의 고유한 식별자

ECMAScript 2015부터 'Symbol' 이라는 새로운 원시타입이 도입.
Symbol은 고유한 식별자로서 사용되며, 한번 생성하면 복사 하거나 변경할 수 없음.

Symbol 사용 목적

보통 Symbol의 사용 목적은 객체의 고유한 프로퍼티 키를 만들기 위해 사용
개인적으로는 애플리케이션 단에서는 활용되기가 어려운것 같음..

Symbol 기본 문법

<요약>
원시형 테이터.
기본분법은 Symbol([description])이며 new 연산자는 지원하지 않음
Symbol()에서 반환되는 값은 고유함.

Symbol('test') === Symbol('test')
// false
  • Symbol 생성 방법
  1. Symbol()
  2. Symbol.for()
  3. Symbol.iterator
  • Symbol() 과 Symbol.for() 차이점
    Symbol.for()는 전역을 존재하는 심볼 테이블의 목록을 참조함.
    Symbol.for(token string) 으로 정의할때, token string 으로 정의 된 심볼이 있다면, 해당 심볼을 반환
var token = Symbol.for("tokenString");
console.log(Symbol.keyFor(token) === "tokenString"); // true
  • Symbol.iterator
    Symbol() 함수로 Symbol 값을 생성할 수 었음. 이 말은 Symbol이 함수 객체라는 의미.
    예로, 어떤 객체가 Symbol.iterator를 프로퍼티 key로 사용한 메소드를 가진다면, 자바스크립트 엔진은
    이 객체가 이터레이션 프로토콜을 따른다고 간주하고 이터레이터로 동작하도록 함.
    이러한 빌트인 객체의 예시:
1. Array
2. String
3. Map
4. Set
5. Dom data structures
- NodeList HTMLCollection
6. argument

let iterable = new Map();
iterable.set('1', 'str1');
iterable.set('2', 'str2');
const iterable = iterableSymbol.iterator;
console.log(iterable.next()); // {value: Array(2), done: false} (0: "1"
1: "str1")
console.log(iterable.next()); // {value: Array(2), done: false} (0: "2"
1: "str2")
console.log(iterable.next()); // {value: undefined, done: true}

0개의 댓글