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
ゲッター は、Symbol
の説明にアクセスするためのより人間工学的な方法を提供します
const symbol = Symbol('foo');
// ^^^^^
symbol.description;
// → 'foo'
説明のない Symbol
の場合、このゲッターは undefined
を返します
const symbol = Symbol();
symbol.description;
// → undefined
Symbol.prototype.description
サポート #
- Chrome: バージョン 70 以降でサポート
- Firefox: バージョン 63 以降でサポート
- Safari: バージョン 12.1 以降でサポート
- Node.js: バージョン 12 以降でサポート
- Babel: サポート済み