JavaScript/Symbol/toStringTag

カテゴリ:Book:JavaScript#Symbol/toStringTag%20

Symbol.toStringTag は、オブジェクトのデフォルトの文字列表現を作成するために使用される内部プロパティを指定するために使われるシンボルです。このシンボルは、Object.prototype.toString() メソッドによって参照され、オブジェクトの型を表す文字列を返します[1]

構文

Symbol.toStringTag

説明

Symbol.toStringTag は、ECMAScript の組み込みシンボル値の一つで、Object.prototype.toString() メソッドによって使用されます。オブジェクトの [Symbol.toStringTag] プロパティの値は、Object.prototype.toString() の結果に使用される文字列を決定します。

カスタムクラスに Symbol.toStringTag を設定するプログラム

以下のプログラムは、カスタムクラスに Symbol.toStringTag を設定して、toString() メソッドの結果をカスタマイズします。

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

const obj = new MyClass();
console.log(Object.prototype.toString.call(obj)); // '[object MyClass]'

このプログラムでは、MyClass クラスに Symbol.toStringTag を設定し、Object.prototype.toString.call(obj) を呼び出すと '[object MyClass]' が返されます。

組み込みオブジェクトの Symbol.toStringTag を確認するプログラム

以下のプログラムは、いくつかの組み込みオブジェクトの Symbol.toStringTag の値を確認します。

console.log(Object.prototype.toString.call([])); // '[object Array]'
console.log(Object.prototype.toString.call({})); // '[object Object]'
console.log(Object.prototype.toString.call(new Map())); // '[object Map]'
console.log(Object.prototype.toString.call(new Set())); // '[object Set]'
console.log(Object.prototype.toString.call(new Promise(() => {}))); // '[object Promise]'

このプログラムでは、さまざまな組み込みオブジェクトに対して Object.prototype.toString.call() を呼び出し、それぞれのオブジェクトタイプに応じた文字列が返されます。

オブジェクトに Symbol.toStringTag を直接設定するプログラム

以下のプログラムは、オブジェクトに Symbol.toStringTag プロパティを直接設定します。

const obj = {};
obj[Symbol.toStringTag] = 'CustomObject';
console.log(Object.prototype.toString.call(obj)); // '[object CustomObject]'

このプログラムでは、通常のオブジェクトに Symbol.toStringTag プロパティを追加し、Object.prototype.toString.call(obj) を呼び出すと '[object CustomObject]' が返されます。

注意点

  • 既定値: Symbol.toStringTag プロパティが存在しない場合、Object.prototype.toString() は '[object Object]' のような既定の文字列を返します。
  • 組み込みオブジェクト: 多くの組み込みオブジェクトタイプには、独自の Symbol.toStringTag 値が事前定義されています。
  • オーバーライド: 組み込みオブジェクトの Symbol.toStringTag をオーバーライドすることは可能ですが、推奨されません。
  • ポリフィル: 古いブラウザでは、Symbol.toStringTag をポリフィルする必要がある場合があります。

脚註

  1. Symbol.toStringTag は、オブジェクトの種類を識別するために使用されます。

外部リンク

カテゴリ:Book:JavaScript#Symbol/toStringTag%20 カテゴリ:JavaScript
カテゴリ:Book:JavaScript カテゴリ:JavaScript カテゴリ:Pages using the JsonConfig extension