MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/d6d7ff2e2f9c

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)
The definition of 'Symbol.for' in that specification.
Standard Definición inicial
ECMAScript Latest Draft (ECMA-262)
The definition of 'Symbol.for' in that specification.
Living Standard  

Compatibilidad entre exploradores

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

Ver también

Etiquetas y colaboradores del documento

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