この翻訳は不完全です。英語から この記事を翻訳 してください。

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 AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 あり あり あり51 あり あり あり

関連情報

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

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