javascript symbols ecmascript-6

javascript - Obtenga la descripción de un símbolo ES6



symbols ecmascript-6 (4)

paquete de symbol-description de símbolos en npm

Devuelve la descripción del símbolo proporcionado:

const symDesc = require(''symbol-description'') symDesc(Symbol(''foo'')) // foo

Fue publicado por mí justo ahora después de leer esta respuesta aquí .

Me pregunto si hay una buena manera de obtener las descripciones de un símbolo.

Por ejemplo,

var s = Symbol(5);

La implementación predeterminada de toString simplemente imprimirá Symbol (5)

Me gustaría encontrar una manera de extraer la descripción real, es decir, 5


No hay una forma ordenada de hacer esto. Sin embargo, si ha registrado un símbolo en el registro global, puede usar Symbol.keyFor() :

var s = Symbol.for(5); console.log(Symbol.keyFor(s));



String(symbol).slice(7, -1) || null

Esto funciona porque String(symbol) coacciona explícitamente el símbolo en una cadena, por ejemplo, Symbol(''test'') convierte en "Symbol(test)" .

Hacer un empalme en el 7 al -1 hace un empalme entre los dos soportes, capturando así la test descripción

Nota : es posible que esto no funcione para descripciones de objetos (p. Ej., Symbol({test}) ) ya que los objetos se convierten en "[object Object]"