수색…


통사론

  • 상징()
  • 기호 (설명)
  • 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


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow