[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag [Back]  [Original]

Symbol.toStringTag - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

Symbol.toStringTag

Baseline
Weitgehend verfgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit April 2017 browserbergreifend verfgbar.

Die statische Dateneigenschaft Symbol.toStringTag reprsentiert das wohlbekannte Symbol Symbol.toStringTag. Object.prototype.toString() sucht auf dem this-Wert nach diesem Symbol, um den String abzurufen, der den Typ des Objekts beschreibt.

In diesem Artikel

Probieren Sie es aus

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

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

Wert

Das wohlbekannte Symbol Symbol.toStringTag.

Eigenschaften von Symbol.toStringTag
Schreibbarnein
Aufzhlbarnein
Konfigurierbarnein

Beispiele

Standard-Tags

Einige Werte haben kein Symbol.toStringTag, besitzen aber spezielle toString()-Darstellungen. Eine vollstndige Liste finden Sie unter Object.prototype.toString().

js
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

Integrierte toStringTag-Symbole

Die meisten integrierten Objekte stellen eine eigene [Symbol.toStringTag]-Eigenschaft bereit. Bei fast allen integrierten Objekten ist diese Eigenschaft nicht beschreibbar, nicht aufzhlbar und konfigurierbar. Eine Ausnahme bildet Iterator: Aus Kompatibilittsgrnden ist die Eigenschaft dort beschreibbar.

Bei Konstruktorobjekten wie Promise wird die Eigenschaft auf Constructor.prototype definiert. Dadurch erben alle Instanzen des Konstruktors [Symbol.toStringTag] und knnen in einen String umgewandelt werden. Bei Objekten, die keine Konstruktoren sind, wie Math und JSON, wird die Eigenschaft als statische Eigenschaft definiert, sodass das Namespace-Objekt selbst in einen String umgewandelt werden kann. Manchmal stellt der Konstruktor auch eine eigene toString-Methode bereit (beispielsweise Intl.Locale). In diesem Fall wird die [Symbol.toStringTag]-Eigenschaft nur verwendet, wenn Sie Object.prototype.toString ausdrcklich darauf aufrufen.

js
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

Benutzerdefiniertes Tag mit toStringTag

Wenn Sie eine eigene Klasse erstellen, verwendet JavaScript standardmig das Tag Object:

js
class ValidatorClass {}

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

Mithilfe von toStringTag knnen Sie ein eigenes Tag festlegen:

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

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

toStringTag auf allen DOM-Prototypobjekten verfgbar

Aufgrund einer nderung der WebIDL-Spezifikation Mitte 2020 fgen Browser allen DOM-Prototypobjekten eine Symbol.toStringTag-Eigenschaft hinzu. So greifen Sie beispielsweise auf die Symbol.toStringTag-Eigenschaft von HTMLButtonElement zu:

js
const test = document.createElement("button");
test.toString(); // "[object HTMLButtonElement]"
test[Symbol.toStringTag]; // "HTMLButtonElement"

Spezifikationen

Spezifikation
ECMAScript 2027 LanguageSpecification
# sec-symbol.tostringtag

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page