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

新的 Symbol.prototype.description getter 提供更符合人體工學的方式來存取 Symbol 的說明

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

對於沒有說明的 Symbol,getter 會傳回 undefined

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

Symbol.prototype.description 支援 #