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

Object.prototype.toString() - 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

Object.prototype.toString()

Baseline Weitgehend verfgbar

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

Die toString() Methode von Object Instanzen gibt eine Zeichenkette zurck, die dieses Objekt darstellt. Diese Methode soll von abgeleiteten Objekten fr benutzerdefinierte Typumwandlungslogik berschrieben werden.

In diesem Artikel

Probieren Sie es aus

const map = new Map();

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

Syntax

js
toString()

Parameter

Standardmig nimmt toString() keine Parameter. Jedoch knnen Objekte, die von Object erben, sie mit eigenen Implementierungen berschreiben, die Parameter akzeptieren. Zum Beispiel nehmen die Methoden Number.prototype.toString() und BigInt.prototype.toString() einen optionalen radix Parameter.

Rckgabewert

Eine Zeichenkette, die das Objekt darstellt.

Beschreibung

JavaScript ruft die toString Methode auf, um ein Objekt in einen primitiven Wert zu konvertieren. In der Regel mssen Sie die toString 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 der Zeichenkettenkonvertierung aufgerufen, aber die numerische Konvertierung und primitive Konvertierung rufen valueOf() vorrangig auf. Da die Basis-Methode valueOf() jedoch ein Objekt zurckgibt, wird normalerweise die toString() Methode aufgerufen, es sei denn, das Objekt berschreibt valueOf(). Zum Beispiel gibt +[1] den Wert 1 zurck, da seine toString() Methode "1" zurckgibt, welches dann in eine Zahl umgewandelt wird.

Alle Objekte, die von Object.prototype erben (das heit, alle auer null-Prototyp Objekten) erben die toString() Methode. Wenn Sie ein benutzerdefiniertes Objekt erstellen, knnen Sie toString() berschreiben, um eine benutzerdefinierte Methode aufzurufen, sodass Ihr benutzerdefiniertes Objekt in einen Zeichenkettenwert umgewandelt werden kann. Alternativ knnen Sie eine Methode [Symbol.toPrimitive]() hinzufgen, die noch mehr Kontrolle ber den Konvertierungsprozess ermglicht und immer gegenber valueOf oder toString fr jede Typumwandlung bevorzugt wird.

Um das Basis-Object.prototype.toString() mit einem Objekt zu verwenden, das es berschreibt (oder um es auf null oder undefined auszufhren), mssen Sie Function.prototype.call() oder Function.prototype.apply() aufrufen, wobei Sie das Objekt, das Sie untersuchen mchten, als ersten Parameter (genannt thisArg) 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]" zurck, wobei Type der Objekttyp ist. Wenn das Objekt eine Symbol.toStringTag Eigenschaft hat, deren Wert eine Zeichenkette ist, wird dieser Wert als Type verwendet. Viele eingebaute Objekte, einschlielich Map und Symbol, haben ein Symbol.toStringTag. Einige Objekte, die vor ES6 existierten, haben kein Symbol.toStringTag, aber dennoch einen speziellen Tag. Dazu gehren (das Tag ist der unten angegebene Typenname):

Das arguments Objekt gibt "[object Arguments]" zurck. Alles andere, einschlielich benutzerdefinierter Klassen, gibt, sofern kein benutzerdefiniertes Symbol.toStringTag vorhanden ist, "[object Object]" zurck.

Object.prototype.toString() auf null und undefined aufgerufen, gibt [object Null] bzw. [object Undefined] zurck.

Beispiele

berschreiben von toString fr benutzerdefinierte Objekte

Sie knnen eine Funktion erstellen, die anstelle der Standard-toString() Methode aufgerufen wird. Die toString() Funktion, die Sie erstellen, sollte einen Zeichenkettenwert zurckgeben. Wenn sie ein Objekt zurckgibt und die Methode implizit whrend der Typumwandlung aufgerufen wird, wird ihr Ergebnis ignoriert und der Wert einer verwandten Methode, valueOf(), wird stattdessen verwendet, oder es wird ein TypeError ausgelst, wenn keine dieser Methoden einen primitiven Wert zurckgibt.

Der folgende Code definiert eine Dog-Klasse.

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

Wenn Sie die toString() Methode, entweder explizit oder implizit, auf eine Instanz von Dog aufrufen, gibt sie den Standardwert zurck, der von Object 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 den name, breed, color und sex des Objekts enthlt.

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 von Dog in einem Zeichenkettenkontext verwendet wird, die toString() 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 (standardmig), 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.toStringTag
toString.call(Math); // [object Math]

toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]

Die Verwendung von toString() auf diese Weise ist nicht zuverlssig; Objekte knnen das Verhalten von Object.prototype.toString() ndern, indem sie eine Symbol.toStringTag Eigenschaft definieren, was zu unerwarteten Ergebnissen fhren 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

Spezifikation
ECMAScript 2027 LanguageSpecification
# sec-object.prototype.tostring

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page