この記事は翻訳作業中です。

well-known symbolであるSymbol.toStringTagは、オブジェクトを説明するデフォルト文字列の作成に使用される文字列値のプロパティです。Object.prototype.toString()メソッドによって内部的にアクセスされます。

Symbol.toStringTag のプロパティ属性
書込可能 不可
列挙可能 不可
設定可能 不可

説明

多くのJavaScriptの型にはデフォルトでタグがついています。

Object.prototype.toString.call('foo');     // "[object String]"
Object.prototype.toString.call([1, 2]);    // "[object Array]"
Object.prototype.toString.call(3);         // "[object Number]"
Object.prototype.toString.call(true);      // "[object Boolean]"
Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(null);      // "[object Null]"
// ... and more

定義済みのtoStringTagシンボルを持つ型もあります。

Object.prototype.toString.call(new Map());       // "[object Map]"
Object.prototype.toString.call(function* () {}); // "[object GeneratorFunction]"
Object.prototype.toString.call(Promise.resolve()); // "[object Promise]"
// ... and more

クラスを作成したとき、JavaScriptはデフォルトで"Object"というタグをつけます。

class ValidatorClass {}

Object.prototype.toString.call(new ValidatorClass()); // "[object Object]"

toStringTagを使えば、あなたオリジナルのタグを設定することができます。

class ValidatorClass {
  get [Symbol.toStringTag]() {
    return 'Validator';
  }
}

Object.prototype.toString.call(new ValidatorClass()); // "[object Validator]"

仕様

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Symbol.toStringTag の定義
標準 Initial definition.
ECMAScript Latest Draft (ECMA-262)
Symbol.toStringTag の定義
現行の標準  

ブラウザ実装状況

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本サポート49 有り51 無し 有り 有り
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基本サポート 有り 有り 有り51 無し 有り 有り

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: one-kelvin
 最終更新者: one-kelvin,