수색…
통사론
- 상징()
- 기호 (설명)
- Symbol.toString ()
비고
ECMAScript 2015 사양 19.4 기호
기호 기본 유형의 기본 사항
Symbol
은 ES6의 새로운 기본 유형입니다. 심볼은 주로 속성 키로 사용되며, 주요 특징 중 하나는 동일한 설명이 있어도 고유 하다는 것입니다. 즉, symbol
이나 string
다른 속성 키와 이름 충돌이 발생하지 않습니다.
const MY_PROP_KEY = Symbol();
const obj = {};
obj[MY_PROP_KEY] = "ABC";
console.log(obj[MY_PROP_KEY]);
이 예에서 console.log
의 결과는 ABC
입니다.
Symbols은 다음과 같이 지정할 수도 있습니다.
const APPLE = Symbol('Apple');
const BANANA = Symbol('Banana');
const GRAPE = Symbol('Grape');
이 값들은 각각 고유하며 재정의 될 수 없습니다.
프리미티브 심볼을 만들 때 선택적 매개 변수 (description)
제공하면 디버깅에는 사용할 수 있지만 심볼 자체에 액세스 할 수는 없습니다. 그러나 전역 공유 심볼을 등록 / 조회하는 방법에 대해서는 Symbol.for()
예제를 참조하십시오.
심볼을 문자열로 변환하기
다른 대부분의 JavaScript 객체와 달리, 연결을 수행 할 때 심볼은 자동으로 문자열로 변환되지 않습니다.
let apple = Symbol('Apple') + ''; // throws TypeError!
대신 toString
메서드 나 String
생성자를 사용하여 필요할 때 문자열을 명시 적으로 문자열로 변환해야합니다 (예 : 디버그 메시지에 사용할 수있는 심볼의 텍스트 설명을 가져 오는 것).
const APPLE = Symbol('Apple');
let str1 = APPLE.toString(); // "Symbol(Apple)"
let str2 = String(APPLE); // "Symbol(Apple)"
Symbol.for ()를 사용하여 전역 공유 기호 만들기
Symbol.for
메서드를 사용하면 전역 심볼을 이름으로 등록하고 찾을 수 있습니다. 지정된 키로 처음 호출되면 새 심볼이 만들어 져서 레지스트리에 추가됩니다.
let a = Symbol.for('A');
다음에 Symbol.for('A')
를 호출하면 새로운 기호 대신 동일한 기호 가 반환됩니다 ( Symbol('A')
와는 대조적으로 동일한 설명이 새롭고 고유 한 기호를 생성합니다 Symbol('A')
).
a === Symbol.for('A') // true
그러나
a === Symbol('A') // false