概要
例えば『Object.prototype.toString.call([])』と呼ぶと、『"[object Array]"』と帰ってくるが、
その「Array」の部分をどういう表記にするか設定できるシンボルが実装された。
例
function Cat() { } var cat = new Cat console.log( '' + cat ) // "[object Object]" Cat.prototype[Symbol.toStringTag] = 'Cat' console.log( '' + cat ) // "[object Cat]"
ただし次に挙げる名前には出来ない。
Arguments, Array, Boolean, Date, Error, Function, Number, RegExp, String
これらの名前に設定した場合はtoString時、頭に「~」が付く。
function Cat() { } Cat.prototype[Symbol.toStringTag] = 'Array' console.log( '' + new Cat ) // "[object ~Array]"
ちなみにその逆は可能である。
Array.prototype[Symbol.toStringTag] = 'Cat' console.log( Object.prototype.toString.call([]) ) // "[object Cat]"
上で挙げた特別なもの以外のビルドインコンストラクタには@@toStringTagが定義されている。
console.log( Map.prototype[Symbol.toStringTag] ) // "Map"
実装されるバージョン
V8 3.30.16 -