なぜJavaScriptにはSymbol型があるのですか?
主に属性のリネームを防ぐため
よく知られているシンボル
独自に作成されたシンボルに加えて、JavaScript には ECMAScript 5 では開発者に公開されていない組み込みシンボルがあり、これらは言語内部の振る舞いを表します。これらは以下のプロパティを使ってアクセスできます:
Symbol.iterator オブジェクトのデフォルトのイテレータを返すメソッドです。for...で使用します。で使用します。Symbol.asyncIterator オブジェクトのデフォルトの非同期イテレータを返すメソッドです。...の待ちのために使用されます。正規表現シンボル Symbol.match 文字列をマッチングし、オブジェクトが正規表現として使用できるかどうかを判定するメソッドです。String.prototype.match()で使用されます。Symbol.replace マッチした文字列の部分文字列を置換するメソッドです。 String.prototype.replace()で使用します。Symbol.search 正規表現にマッチする文字列のインデックスを返すメソッドです。String.prototype.search()で使用します。Symbol.split 正規表現にマッチしたインデックスで文字列を分割するメソッドです。String.prototype.split()で使用します。その他のシンボル Symbol.hasInstance コンストラクタ・オブジェクトによって識別されるオブジェクトが、そのオブジェクトのインスタンスであるかどうかを判定するメソッドです。instanceof で使用されます。Symbol.isConcatSpreadable オブジェクトを配列要素に平坦化するかどうかを示すブール値。Array.prototype.concat() で使用されます。Symbol.unscopables プロパティ名を所有し継承するオブジェクトの値は、環境にバインドされた関連オブジェクトから除外されます。Symbol.species 派生オブジェクトを作成するためのコンストラクタ関数。Symbol.toPrimitive オブジェクトをプリミティブデータ型に変換するメソッド。Symbol.toStringTag オブジェクトのデフォルトの説明に使用される文字列値。Object.prototype.toString() で使用されます。