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 Latest Draft (ECMA-262)
La definición de 'Symbol.for' en esta especificación.
Draft  

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!

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

Etiquetas y colaboradores del documento

 Colaboradores en esta página: dariomaim
 Última actualización por: dariomaim,