A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag below:

Symbol.toStringTag - JavaScript | MDN

Symbol.toStringTag

Baseline Widely available

Symbol.toStringTag は静的データプロパティで、ウェルノウンシンボルである Symbol.toStringTag を表します。Object.prototype.toString() は this に対して、このオブジェクトの型を表す文字列を持つプロパティを、このシンボルで探します。

試してみましょう
class ValidatorClass {
  get [Symbol.toStringTag]() {
    return "Validator";
  }
}

console.log(Object.prototype.toString.call(new ValidatorClass()));
// Expected output: "[object Validator]"
値

ウェルノウンシンボル Symbol.toStringTag です。

書込可能 不可 列挙可能 不可 設定可能 不可 例 既定のタグ

値によっては Symbol.toStringTag を持たず、特別な toString() 表現を持つものもあります。完全な一覧は、Object.prototype.toString() を参照してください。

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 シンボル

ほとんどの組み込みオブジェクトは、独自の [Symbol.toStringTag] プロパティを提供 しています。ほとんどの組み込みオブジェクト [Symbol.toStringTag] プロパティは書き込み不可、列挙不可、構成可能です。例外は Iterator で、互換性の理由から書き込み可能です。

Promise のようなコンストラクターオブジェクトでは、コンストラクターのすべてのインスタンスが [Symbol.toStringTag] を継承し、文字列化できるように、プロパティは Constructor.prototype にインストールされます。Math や JSON のようなコンストラクター以外のオブジェクトの場合、プロパティは静的プロパティとしてインストールされ、名前空間オブジェクト自体が文字列化できるようになります。コンストラクターが独自の toString メソッドを提供することもあります(例えば、Intl.Locale)。この場合、 [Symbol.toStringTag] プロパティは、明示的に Object.prototype.toString を呼び出した場合にのみ使用されます。

Object.prototype.toString.call(new Map()); // "[object Map]"
Object.prototype.toString.call(function* () {}); // "[object GeneratorFunction]"
Object.prototype.toString.call(Promise.resolve()); // "[object Promise]"
// ... などなど
独自クラスの既定のオブジェクトタグ

クラスを作成すると、 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]"
すべての DOM プロトタイプオブジェクトで利用可能な toStringTag

WebIDL の仕様変更が 2020 年半ばに行われた関係で、ブラウザーはすべての DOM プロトタイプオブジェクトに Symbol.toStringTag プロパティを追加するようになりました。例えば、HTMLButtonElement の Symbol.toStringTag プロパティにアクセスするには次のようにします。

const test = document.createElement("button");
test.toString(); // "[object HTMLButtonElement]"
test[Symbol.toStringTag]; // "HTMLButtonElement"
仕様書 ブラウザーの互換性 関連情報

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4