| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
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.
class ValidatorClass {
get [Symbol.toStringTag]() {
return "Validator";
}
}
console.log(Object.prototype.toString.call(new ValidatorClass()));
// Expected output: "[object Validator]"
Das wohlbekannte Symbol Symbol.toStringTag.
Eigenschaften von Symbol.toStringTag | |
|---|---|
| Schreibbar | nein |
| Aufzhlbar | nein |
| Konfigurierbar | nein |
Einige Werte haben kein Symbol.toStringTag, besitzen aber spezielle toString()-Darstellungen. Eine vollstndige Liste finden Sie unter 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
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.
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
Wenn Sie eine eigene Klasse erstellen, verwendet JavaScript standardmig das Tag Object:
class ValidatorClass {}
Object.prototype.toString.call(new ValidatorClass()); // "[object Object]"
Mithilfe von toStringTag knnen Sie ein eigenes Tag festlegen:
class ValidatorClass {
get [Symbol.toStringTag]() {
return "Validator";
}
}
Object.prototype.toString.call(new ValidatorClass()); // "[object Validator]"
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:
const test = document.createElement("button");
test.toString(); // "[object HTMLButtonElement]"
test[Symbol.toStringTag]; // "HTMLButtonElement"
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-symbol.tostringtag |
SymbolObject/FunctionDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |