メインコンテンツまでスキップ

`Symbol.prototype.description`

· 約2分
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.prototype.description のゲッター は、Symbol の説明にアクセスするためのより使いやすい方法を提供します:

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

説明のない Symbol に対しては、ゲッターは undefined を返します:

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

Symbol.prototype.description の対応状況