Baseline Widely available
Die statische Dateneigenschaft Symbol.toStringTag
repräsentiert das bekannte Symbol Symbol.toStringTag
. Object.prototype.toString()
sucht dieses Symbol im this
-Wert der Eigenschaft, die eine Zeichenfolge enthält, die den Typ des Objekts darstellt.
class ValidatorClass {
get [Symbol.toStringTag]() {
return "Validator";
}
}
console.log(Object.prototype.toString.call(new ValidatorClass()));
// Expected output: "[object Validator]"
Wert
Das bekannte Symbol Symbol.toStringTag
.
Einige Werte haben kein Symbol.toStringTag
, aber spezielle toString()
-Darstellungen. Eine vollständige 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
Eingebaute toStringTag-Symbole
Die meisten eingebauten Objekte stellen ihre eigene [Symbol.toStringTag]
-Eigenschaft bereit. Fast alle [Symbol.toStringTag]
-Eigenschaften der eingebauten Objekte sind nicht beschreibbar, nicht aufzählbar und konfigurierbar; die Ausnahme ist Iterator
, die aus Kompatibilitätsgründen beschreibbar ist.
Bei Konstruktorobjekten wie Promise
wird die Eigenschaft auf Constructor.prototype
installiert, sodass alle Instanzen des Konstruktors [Symbol.toStringTag]
erben und als Zeichenfolge dargestellt werden können. Bei Nicht-Konstruktorobjekten wie Math
und JSON
wird die Eigenschaft als statische Eigenschaft installiert, sodass das Namensraum-Objekt selbst als Zeichenfolge dargestellt werden kann. Manchmal stellt der Konstruktor auch seine eigene toString
-Methode bereit (zum Beispiel Intl.Locale
), in welchem Fall die [Symbol.toStringTag]
-Eigenschaft nur verwendet wird, wenn Sie explizit Object.prototype.toString
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
Benutzerdefiniertes Tag mit toStringTag
Beim Erstellen Ihrer eigenen Klasse verwendet JavaScript standardmäÃig das "Object"-Tag:
class ValidatorClass {}
Object.prototype.toString.call(new ValidatorClass()); // "[object Object]"
Nun, mit Hilfe von toStringTag
können Sie Ihr eigenes benutzerdefiniertes Tag festlegen:
class ValidatorClass {
get [Symbol.toStringTag]() {
return "Validator";
}
}
Object.prototype.toString.call(new ValidatorClass()); // "[object Validator]"
toStringTag verfügbar auf allen DOM-Prototypenobjekten
Aufgrund einer WebIDL-Spezifikationsänderung in der Mitte des Jahres 2020 fügen Browser eine Symbol.toStringTag
-Eigenschaft zu allen DOM-Prototypenobjekten hinzu. Um zum Beispiel die Symbol.toStringTag
-Eigenschaft auf HTMLButtonElement
zuzugreifen:
const test = document.createElement("button");
test.toString(); // "[object HTMLButtonElement]"
test[Symbol.toStringTag]; // "HTMLButtonElement"
Spezifikationen Browser-Kompatibilität Siehe auch
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