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
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:
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 Language Specification # sec-symbol-constructor |
Compatibilidad con navegadores
BCD tables only load in the browser