Buscar..


Sintaxis

  • Símbolo()
  • Símbolo (descripción)
  • Symbol.toString ()

Observaciones

ECMAScript 2015 Especificación 19.4 Símbolos

Fundamentos del tipo de símbolo primitivo.

Symbol es un nuevo tipo primitivo en ES6. Los símbolos se utilizan principalmente como claves de propiedades , y una de sus principales características es que son únicas , incluso si tienen la misma descripción. Esto significa que nunca tendrán un conflicto de nombres con ninguna otra clave de propiedad que sea un symbol o una string .

const MY_PROP_KEY = Symbol();
const obj = {};

obj[MY_PROP_KEY] = "ABC";
console.log(obj[MY_PROP_KEY]); 

En este ejemplo, el resultado de console.log sería ABC .

También puede haber nombrado símbolos como:

const APPLE    = Symbol('Apple');
const BANANA   = Symbol('Banana');
const GRAPE    = Symbol('Grape');

Cada uno de estos valores es único y no se puede anular.

Proporcionar un parámetro opcional (description) al crear símbolos primitivos se puede usar para la depuración pero no para acceder al símbolo en sí (pero vea el ejemplo de Symbol.for() para ver / registrar símbolos globales compartidos).

Convertir un símbolo en una cadena

A diferencia de la mayoría de los otros objetos de JavaScript, los símbolos no se convierten automáticamente en una cadena al realizar la concatenación.

let apple = Symbol('Apple') + ''; // throws TypeError!

En su lugar, tienen que convertirse explícitamente en una cadena cuando sea necesario (por ejemplo, para obtener una descripción textual del símbolo que se puede usar en un mensaje de depuración) utilizando el método toString o el constructor String .

const APPLE = Symbol('Apple');
let str1 = APPLE.toString(); // "Symbol(Apple)"
let str2 = String(APPLE);    // "Symbol(Apple)"

Usando Symbol.for () para crear símbolos globales compartidos

El método Symbol.for permite registrarse y buscar símbolos globales por nombre. La primera vez que se llama con una clave dada, crea un nuevo símbolo y lo agrega al registro.

let a = Symbol.for('A');

La próxima vez que llame a Symbol.for('A') , se devolverá el mismo símbolo en lugar de uno nuevo (en contraste con el Symbol('A') que creará un nuevo símbolo único que tiene la misma descripción ).

a === Symbol.for('A') // true

pero

a === Symbol('A') // false


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow