Symbol() constructor

El constructor Symbol() devuelve un valor de tipo symbol, pero está incompleto como constructor porque no soporta la sintaxis "new Symbol()" y no está pensado para ser heredado. Puede utilizarse como valor de una cláusula extends de una definición de class, pero una llamada a super provocará una excepción.

Pruébalo

Sintaxis

js
Symbol();
Symbol(description);

Parámetros

description Opcional

Una cadena. Una descripción del símbolo que puede utilizarse para la depuración pero no para acceder al símbolo en sí.

Ejemplos

Crear símbolos

Para crear un nuevo símbolo primitivo, se escribe Symbol() con una cadena opcional como descripción:

js
let sym1 = Symbol();
let sym2 = Symbol("foo");
let sym3 = Symbol("foo");

El código anterior crea tres nuevos símbolos. Tenga en cuenta que Symbol("foo") no coacciona la cadena "foo" en un símbolo. Cada vez crea un nuevo símbolo:

js
Symbol("foo") === Symbol("foo"); // false

new Symbol()

La siguiente sintaxis con el operador new lanzará un TypeError:

js
let sym = new Symbol(); // TypeError

Esto evita que los autores creen un objeto envolvente explícito Symbol en lugar de un nuevo valor de símbolo y podría ser sorprendente ya que la creación de objetos envolventes explícitos alrededor de tipos de datos primitivos es generalmente posible (por ejemplo, new Boolean, new String y new Number).

Si realmente quieres crear un objeto envolvente Symbol, puedes utilizar la función Object():

js
let sym = Symbol("foo");
let symObj = Object(sym);
typeof sym; // => "symbol"
typeof symObj; // => "object"

Especificaciones

Specification
ECMAScript Language Specification
# sec-symbol-constructor

Compatibilidad con navegadores

BCD tables only load in the browser

Véase también