Symbol() constructor
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since septiembre de 2015.
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
const symbol1 = Symbol();
const symbol2 = Symbol(42);
const symbol3 = Symbol("foo");
console.log(typeof symbol1);
// Expected output: "symbol"
console.log(symbol2 === 42);
// Expected output: false
console.log(symbol3.toString());
// Expected output: "Symbol(foo)"
console.log(Symbol("foo") === Symbol("foo"));
// Expected output: false
Sintaxis
Symbol();
Symbol(description);
Parámetros
descriptionOpcional-
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:
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:
Symbol("foo") === Symbol("foo"); // false
new Symbol()
La siguiente sintaxis con el operador new lanzará un TypeError:
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():
let sym = Symbol("foo");
let symObj = Object(sym);
typeof sym; // => "symbol"
typeof symObj; // => "object"
Especificaciones
| Specification |
|---|
| ECMAScript® 2027 Language Specification > # sec-symbol-constructor > |