A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Object/toString below:

Object.prototype.toString() - JavaScript | MDN

Object.prototype.toString()

Baseline Widely available

Die toString() Methode von Object Instanzen gibt eine Zeichenkette zurück, die dieses Objekt darstellt. Diese Methode soll von abgeleiteten Objekten für benutzerdefinierte Typumwandlungslogik überschrieben werden.

Probieren Sie es aus
const map = new Map();

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

Standardmäßig nimmt toString() keine Parameter. Jedoch können 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.

Rückgabewert

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 müssen 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 zurückgibt, wird normalerweise die toString() Methode aufgerufen, es sei denn, das Objekt überschreibt valueOf(). Zum Beispiel gibt +[1] den Wert 1 zurück, da seine toString() Methode "1" zurückgibt, welches dann in eine Zahl umgewandelt wird.

Alle Objekte, die von Object.prototype erben (das heißt, alle außer null-Prototyp Objekten) erben die toString() Methode. Wenn Sie ein benutzerdefiniertes Objekt erstellen, können Sie toString() ü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über valueOf oder toString für 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 auszuführen), müssen Sie Function.prototype.call() oder Function.prototype.apply() aufrufen, wobei Sie das Objekt, das Sie untersuchen möchten, als ersten Parameter (genannt thisArg) übergeben.

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, 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, einschließlich Map und Symbol, haben ein Symbol.toStringTag. Einige Objekte, die vor ES6 existierten, haben kein Symbol.toStringTag, aber dennoch einen speziellen Tag. Dazu gehören (das Tag ist der unten angegebene Typenname):

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

Object.prototype.toString() auf null und undefined 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. Die toString() Funktion, die Sie erstellen, sollte einen Zeichenkettenwert zurückgeben. Wenn sie ein Objekt zurückgibt und die Methode implizit während der Typumwandlung aufgerufen wird, wird ihr Ergebnis ignoriert und der Wert einer verwandten Methode, valueOf(), wird stattdessen verwendet, oder es wird ein TypeError ausgelöst, wenn keine dieser Methoden einen primitiven Wert zurückgibt.

Der folgende Code definiert eine Dog-Klasse.

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 zurück, der von Object geerbt wurde:

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 enthält.

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.

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.

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 zuverlässig; Objekte können das Verhalten von Object.prototype.toString() ändern, indem sie eine Symbol.toStringTag Eigenschaft definieren, was zu unerwarteten Ergebnissen führen kann. Zum Beispiel:

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 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