`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