跳至主要内容

`Symbol.prototype.description`

· 閱讀時間約 1 分鐘
Mathias Bynens ([@mathias](https://twitter.com/mathias))

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

Symbol.prototype.description 支援情況