Symbol.prototype.description

发布时间 · 标签: ECMAScript ES2019

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(''))。

The new Symbol.prototype.description getter 提供了一种更符合人体工程学的方式来访问Symbol:

const symbol = Symbol('foo');
// ^^^^^
symbol.description;
// → 'foo'

对于没有描述的 Symbol,getter 方法返回 undefined

const symbol = Symbol();
symbol.description;
// → undefined

Symbol.prototype.description support #