Symbol.for()

El m茅todo Symbol.for(key) busca s铆mbolos existentes en el runtime global del registro de symbols con la key enviada c贸mo argumento y devuelve el symbol si fue encontrada. Sino, un nuevo symbol es creado en el registro global de symbols con dicha key .

Syntax

Symbol.for(key);

Par谩metros

key
String, requirido. La key para el s铆mbolo (y tambi茅n usada para la descripci贸n del Symbol).

Valor de retorno

Un Symbol existente para la key enviada si se encuentra, un nuevo Symbol creado para la key si no es encontrado.

Descripci贸n

A diferencia de Symbol(),  la funci贸n Symbol.for() crea un symbol disponible el registro global de symbols.

Sin embargo, Symbol.for() no crea un nuevo symbol en cada llamada: primero chequea si existe un symbol para la key en el registro y s贸lo crea un nuevo symbol si la key no es encontrada.

El registro global de symbol es una lista con la siguiente estructura (inicializada vac铆a):

Estructura registro global de symbol
Field name Value
[[key]] Un string usado como key para identifcar al s铆mbolo.
[[symbol]] El symbol que es guardado globalmente.

Examples

Symbol.for('foo'); // crea un nuevo global symbol
Symbol.for('foo'); // devuelve el symbol creado

// El mismo symbol global, pero no localmente
Symbol.for('bar') === Symbol.for('bar'); // true
Symbol('bar') === Symbol('bar'); // false

// La key es usada en la descripci贸n
var sym = Symbol.for('mario');
sym.toString(); // "Symbol(mario)"

Es una buena pr谩ctica agregar un prefijo a los symbols para evitar conflictos con otras librerias del c贸digo:

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

Especificaciones

Especificaci贸n Estado Comentario
ECMAScript 2015 (6th Edition, ECMA-262)
La definici贸n de 'Symbol.for' en esta especificaci贸n.
Standard Definici贸n inicial
ECMAScript (ECMA-262)
La definici贸n de 'Symbol.for' en esta especificaci贸n.
Living Standard  

Compatibilidad entre exploradores

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help! (en-US)

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support 40 (Yes) 36.0 (36.0) Sin soporte Sin soporte 9
Feature Android Chrome for Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support Sin soporte Sin soporte (Yes) 36.0 (36.0) Sin soporte Sin soporte Sin soporte

Ver tambi茅n