Получите описание символа ES6
Интересно, есть ли хороший способ получить описания Символа.
Например,
var s = Symbol(5);
Реализация toString по умолчанию будет просто печатать Символ (5)
Я хотел бы найти способ извлечь фактическое описание, т.е. 5
Ответы
Ответ 1
String(symbol).slice(7, -1) || null
Это работает, потому что String(symbol)
явно принуждает символ к строке, например. Symbol('test')
принуждается к "Symbol(test)"
.
Выполнение сплайсинга от 7 до -1 делает сплайсинг между двумя скобками, таким образом, записывая описание test
Примечание: это может не работать для описания объектов (например, Symbol({test})
), поскольку объекты принудительно вставляются в "[object Object]"
Ответ 2
Нет никакого опрятного способа сделать это. Однако, если вы зарегистрировали символ в глобальном реестре, вы можете использовать Symbol.keyFor()
:
var s = Symbol.for(5);
console.log(Symbol.keyFor(s));
Ответ 3
Возвращает описание предоставленного символа:
const symDesc = require('symbol-description')
symDesc(Symbol('foo')) // foo
Он был опубликован мной только сейчас после чтения этого ответа здесь.
Ответ 4
Symbol.description возвращает описание символа REF: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/description Как насчет использования s.description в вашем случае