Symbol.for()

현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

Symbol.for(key) 메소드는  runtime-wide 심볼 레지스트리에서 해당 키로 존재하는 심볼을 찾는다. 없으면 전역 심볼 레지시트리에  해당 키로 새로운 심볼을 만들어 준다.  

문법

Symbol.for(key);

파라미터

key
String, 필수. 심볼의 키 (심볼의 설명을 위해서도 쓰인다).

반환 값

해당 키에 해당하는 심볼이 있다면 반환 없으면 새로운 심볼을 만들고 반환한다.

설명

Symbol()과는 다르게, the Symbol.for() 함수는 전역 심볼 레지스트리 리스트에 심볼을 만든다. Symbol.for()는 또한 매 호출마다 새로운 심볼을 만들지 않고 현재 레지스트리에 해당 키를 가진 심볼이 있는지 먼저 검사를 한다. 있다면 그 심볼을 반환한다. 만약 키에 해당하는 심볼이 없다면 Symbol.for()는 새로운 전역 심볼을 만들 것이다.

전역 심볼 레지스트리 

전역심볼 레지스트리는 다음 레코드 구조를 가진 리스트이고 초기 값은 비어 있다:

전역심볼 레지스트리의 레코드

필드 명
[[key]] 심볼을 구분하기 위해 사용되는 문자열 키
[[symbol]] 전역으로 저장되는 심볼

예제

Symbol.for('foo'); // 새로운 전역심볼 생성
Symbol.for('foo'); // 이미 만들어진 심볼을 검색

// 전역심볼은 서로 같고, 지역심볼은 아니다.
Symbol.for('bar') === Symbol.for('bar'); // true
Symbol('bar') === Symbol('bar'); // false

// 키는 설명하는데 쓰이기도 한다.
var sym = Symbol.for('mario');
sym.toString(); // "Symbol(mario)"

다른 라이브러리의 전역 심볼들과 당신의 전역 심볼간의 키 충돌을 피하기 위해서는 당신 심볼 앞에 prefix를 두는 것이 좋다:

Symbol.for('mdn.foo');
Symbol.for('mdn.bar');

명세서

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Symbol.for' in that specification.
Standard Initial definition.
ECMAScript 2017 Draft (ECMA-262)
The definition of 'Symbol.for' in that specification.
Draft  

브라우저 호환성

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 40 36.0 (36.0) No support No support 10
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support No support No support 36.0 (36.0) No support No support No support

참조

문서 태그 및 공헌자

 이 페이지의 공헌자: Hou
 최종 변경: Hou,