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(即 Symbol('')
)。
新的 Symbol.prototype.description
getter 提供了一种更便捷的方法来访问 Symbol
的描述:
const symbol = Symbol('foo');
// ^^^^^
symbol.description;
// → 'foo'
对于没有描述的 Symbol
,getter 返回 undefined
:
const symbol = Symbol();
symbol.description;
// → undefined