`Symbol.prototype.description`
· 1 мин. чтения
В JavaScript для Symbol
можно задать описание при создании:
const symbol = Symbol('foo');
// ^^^^^
Ранее единственным способом программно получить это описание был непрямой вызов Symbol.prototype.toString()
:
const symbol = Symbol('foo');
// ^^^^^
symbol.toString();
// → 'Symbol(foo)'
// ^^^
symbol.toString().slice(7, -1); // 🤔
// → 'foo'
Однако этот код выглядит немного магически, не очень очевиден и нарушает принцип «выражать намерение, а не реализацию». Кроме того, данный метод не позволяет отличить символ без описания (например, Symbol()
) от символа с пустой строкой в качестве описания (например, Symbol('')
).
Новый геттер Symbol.prototype.description
предоставляет более эргономичный способ доступа к описанию Symbol
:
const symbol = Symbol('foo');
// ^^^^^
symbol.description;
// → 'foo'
Для Symbol
без описания геттер возвращает undefined
:
const symbol = Symbol();
symbol.description;
// → undefined