Die toString() Methode gibt eine Stringrepräsentation des Quelltextes einer Funktion zurück.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Syntax
function.toString()
Rückgabewert
Eine Stringrepräsentation des Quelltextes der Funktion.
Beschreibung
Das Function Objekt überschreibt die von Object geerbte Methode toString; sie erbt nicht von Object.prototype.toString. Für benutzerdefinierte Function Objekte gibt die toString Methode einen String zurück, welcher den Quelltext, der die Funktion definiert, enthält.
JavaScript ruft die toString Methode automatisch auf, wenn einen Function als Text repräsentiert werden muss, z. B. wenn eine Funktion mit einem String konkateniert wird.
Die toString() Methode erzeugt eine TypeError Fehler("Function.prototype.toString called on incompatible object"), wenn das Objekt von this Objekt kein Function Objekt ist. Dieser wird auch bei einem Proxy Objekte erzeugt, zum Beispiel:
Function.prototype.toString.call('foo'); // TypeError
var proxy = new Proxy(function() {}, {});
Function.prototype.toString.call(proxy); // TypeError
Wenn die toString() Methode auf eingebauten Objekten oder einer von Function.prototype.bind erstellten Methode aufgerufen wird, gibt toString() native function string zurück, was wie folgt aussiet:
"function () {\n [native code]\n}"
Wenn die toString() Methode auf einer Funktion aufgerufen wird, die mit dem Function Konstruktor erstellt wurde, gibt diese den Quelltext der syntetischen Funktionsdeklerations mit dem Namen "anonymous" zurück, welche die Parameter und den Funktionrumpf enthält.
Beispiele
| Funktion | Ergebnis von Function.prototype.toString |
|---|---|
function f(){}
|
"function f(){}"
|
class A { a(){} }
|
"class A { a(){} }"
|
function* g(){}
|
"function* g(){}"
|
a => a |
"a => a" |
({ a(){} }.a)
|
"a(){}"
|
({ *a(){} }.a)
|
"*a(){}"
|
({ [0](){} }[0])
|
"[0](){}"
|
Object.getOwnPropertyDescriptor({
get a(){}
}, "a").get
|
"get a(){}"
|
Object.getOwnPropertyDescriptor({
set a(x){}
}, "a").set
|
"set a(x){}"
|
Function.prototype.toString |
"function toString() { [native code] }"
|
(function f(){}.bind(0))
|
"function () { [native code] }"
|
Function("a", "b")
|
"function anonymous(a\n) {\nb\n}"
|
Spezifikationen
| Spezifikation | Status | Kommentar |
|---|---|---|
| ECMAScript 1st Edition (ECMA-262) | Standard | Initiale Definition. Implementiert in JavaScript 1.1. |
| ECMAScript 2015 (6th Edition, ECMA-262) Die Definition von 'Function.prototype.toString' in dieser Spezifikation. |
Standard | Spezifischere Anforderungen wurden an die Stringrepräsentation hinzugefügt. |
| Function.prototype.toString revision | Draft | Standardisierung nativer Funktionsstrings am Zeilenende. |
| ECMAScript (ECMA-262) Die Definition von 'Function.prototype.toString' in dieser Spezifikation. |
Lebender Standard |
Browserkompatibilität
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
toString | Chrome Vollständige Unterstützung 1 | Edge Vollständige Unterstützung 12 | Firefox Vollständige Unterstützung 1 | IE Vollständige Unterstützung 5 | Opera Vollständige Unterstützung 3 | Safari Vollständige Unterstützung 1 | WebView Android Vollständige Unterstützung 1 | Chrome Android Vollständige Unterstützung 18 | Firefox Android Vollständige Unterstützung 4 | Opera Android Vollständige Unterstützung 10.1 | Safari iOS Vollständige Unterstützung 1 | Samsung Internet Android Vollständige Unterstützung 1.0 | nodejs Vollständige Unterstützung Ja |
| Support of toString revision | Chrome Keine Unterstützung Nein | Edge Keine Unterstützung Nein | Firefox Vollständige Unterstützung 54 | IE Keine Unterstützung Nein | Opera Keine Unterstützung Nein | Safari Keine Unterstützung Nein | WebView Android Keine Unterstützung Nein | Chrome Android Keine Unterstützung Nein | Firefox Android Vollständige Unterstützung 54 | Opera Android Keine Unterstützung Nein | Safari iOS Keine Unterstützung Nein | Samsung Internet Android Keine Unterstützung Nein | nodejs Keine Unterstützung Nein |
Legende
- Vollständige Unterstützung
- Vollständige Unterstützung
- Keine Unterstützung
- Keine Unterstützung
Firefox spezifische Hinweise
- Seit Firefox 17, ist
Function.prototype.toString()implementiert zum Speichern von Funktionsquelltexten. Der Decompiler wurde entfernt, so das derindentationParameter nicht mehr gebraucht wird. Für mehr Details siehe Bug 761723. - Seit Firefox 38, erzeugt
Function.prototype.toString()einen Fehler fürProxyObjekts (Bug 1100936).