Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Experiment: Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.

Object.prototype.toString()

BaselineWidely available

DietoString() Methode vonObject Instanzen gibt eine Zeichenkette zurück, die dieses Objekt darstellt. Diese Methode soll von abgeleiteten Objekten für benutzerdefinierteTypumwandlungslogik überschrieben werden.

Probieren Sie es aus

const map = new Map();console.log(map.toString());// Expected output: "[object Map]"

Syntax

js
toString()

Parameter

Standardmäßig nimmttoString() keine Parameter. Jedoch können Objekte, die vonObject erben, sie mit eigenen Implementierungen überschreiben, die Parameter akzeptieren. Zum Beispiel nehmen die MethodenNumber.prototype.toString() undBigInt.prototype.toString() einen optionalenradix Parameter.

Rückgabewert

Eine Zeichenkette, die das Objekt darstellt.

Beschreibung

JavaScript ruft dietoString Methode auf, umein Objekt in einen primitiven Wert zu konvertieren. In der Regel müssen Sie dietoString Methode nicht selbst aufrufen; JavaScript ruft sie automatisch auf, wenn ein Objekt gefunden wird, wo ein primitiver Wert erwartet wird.

Diese Methode wird vorrangig bei derZeichenkettenkonvertierung aufgerufen, aber dienumerische Konvertierung undprimitive Konvertierung rufenvalueOf() vorrangig auf. Da die Basis-MethodevalueOf() jedoch ein Objekt zurückgibt, wird normalerweise dietoString() Methode aufgerufen, es sei denn, das Objekt überschreibtvalueOf(). Zum Beispiel gibt+[1] den Wert1 zurück, da seinetoString() Methode"1" zurückgibt, welches dann in eine Zahl umgewandelt wird.

Alle Objekte, die vonObject.prototype erben (das heißt, alle außernull-Prototyp Objekten) erben dietoString() Methode. Wenn Sie ein benutzerdefiniertes Objekt erstellen, können SietoString() überschreiben, um eine benutzerdefinierte Methode aufzurufen, sodass Ihr benutzerdefiniertes Objekt in einen Zeichenkettenwert umgewandelt werden kann. Alternativ können Sie eine Methode[Symbol.toPrimitive]() hinzufügen, die noch mehr Kontrolle über den Konvertierungsprozess ermöglicht und immer gegenübervalueOf odertoString für jede Typumwandlung bevorzugt wird.

Um das Basis-Object.prototype.toString() mit einem Objekt zu verwenden, das es überschreibt (oder um es aufnull oderundefined auszuführen), müssen SieFunction.prototype.call() oderFunction.prototype.apply() aufrufen, wobei Sie das Objekt, das Sie untersuchen möchten, als ersten Parameter (genanntthisArg) übergeben.

js
const arr = [1, 2, 3];arr.toString(); // "1,2,3"Object.prototype.toString.call(arr); // "[object Array]"

Object.prototype.toString() gibt"[object Type]" zurück, wobeiType der Objekttyp ist. Wenn das Objekt eineSymbol.toStringTag Eigenschaft hat, deren Wert eine Zeichenkette ist, wird dieser Wert alsType verwendet. Viele eingebaute Objekte, einschließlichMap undSymbol, haben einSymbol.toStringTag. Einige Objekte, die vor ES6 existierten, haben keinSymbol.toStringTag, aber dennoch einen speziellen Tag. Dazu gehören (das Tag ist der unten angegebene Typenname):

Dasarguments Objekt gibt"[object Arguments]" zurück. Alles andere, einschließlich benutzerdefinierter Klassen, gibt, sofern kein benutzerdefiniertesSymbol.toStringTag vorhanden ist,"[object Object]" zurück.

Object.prototype.toString() aufnull undundefined aufgerufen, gibt[object Null] bzw.[object Undefined] zurück.

Beispiele

Überschreiben von toString für benutzerdefinierte Objekte

Sie können eine Funktion erstellen, die anstelle der Standard-toString() Methode aufgerufen wird. DietoString() Funktion, die Sie erstellen, sollte einen Zeichenkettenwert zurückgeben. Wenn sie ein Objekt zurückgibt und die Methode implizit während derTypumwandlung aufgerufen wird, wird ihr Ergebnis ignoriert und der Wert einer verwandten Methode,valueOf(), wird stattdessen verwendet, oder es wird einTypeError ausgelöst, wenn keine dieser Methoden einen primitiven Wert zurückgibt.

Der folgende Code definiert eineDog-Klasse.

js
class Dog {  constructor(name, breed, color, sex) {    this.name = name;    this.breed = breed;    this.color = color;    this.sex = sex;  }}

Wenn Sie dietoString() Methode, entweder explizit oder implizit, auf eine Instanz vonDog aufrufen, gibt sie den Standardwert zurück, der vonObject geerbt wurde:

js
const theDog = new Dog("Gabby", "Lab", "chocolate", "female");theDog.toString(); // "[object Object]"`${theDog}`; // "[object Object]"

Der folgende Code überschreibt die Standard-toString() Methode. Diese Methode generiert eine Zeichenkette, die denname,breed,color undsex des Objekts enthält.

js
class Dog {  constructor(name, breed, color, sex) {    this.name = name;    this.breed = breed;    this.color = color;    this.sex = sex;  }  toString() {    return `Dog ${this.name} is a ${this.sex} ${this.color} ${this.breed}`;  }}

Mit dem vorstehenden Code wird jedes Mal, wenn eine Instanz vonDog in einem Zeichenkettenkontext verwendet wird, dietoString() Methode automatisch von JavaScript aufgerufen.

js
const theDog = new Dog("Gabby", "Lab", "chocolate", "female");`${theDog}`; // "Dog Gabby is a female chocolate Lab"

Verwenden von toString() zur Erkennung von Objektklassen

toString() kann mit jedem Objekt verwendet werden und erlaubt es Ihnen (standardmäßig), dessen Klasse zu ermitteln.

js
const toString = Object.prototype.toString;toString.call(new Date()); // [object Date]toString.call(new String()); // [object String]// Math has its Symbol.toStringTagtoString.call(Math); // [object Math]toString.call(undefined); // [object Undefined]toString.call(null); // [object Null]

Die Verwendung vontoString() auf diese Weise ist nicht zuverlässig; Objekte können das Verhalten vonObject.prototype.toString() ändern, indem sie eineSymbol.toStringTag Eigenschaft definieren, was zu unerwarteten Ergebnissen führen kann. Zum Beispiel:

js
const myDate = new Date();Object.prototype.toString.call(myDate); // [object Date]myDate[Symbol.toStringTag] = "myDate";Object.prototype.toString.call(myDate); // [object myDate]Date.prototype[Symbol.toStringTag] = "prototype polluted";Object.prototype.toString.call(new Date()); // [object prototype polluted]

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-object.prototype.tostring

Browser-Kompatibilität

Siehe auch

MDN-Feedback-Box

Diese Seite wurde automatisch aus dem Englischen übersetzt.


[8]ページ先頭

©2009-2025 Movatter.jp