建立時可以為 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
支援 #
- Chrome: 自版本 70 起支援
- Firefox: 自版本 63 起支援
- Safari: 自版本 12.1 起支援
- Node.js: 自版本 12 起支援
- Babel: 支援