Function.prototype.toString()

Die toString() Methode gibt eine Stringrepräsentation des Quelltextes einer Funktion zurück.

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 Latest Draft (ECMA-262)
Die Definition von 'Function.prototype.toString' in dieser Spezifikation.
Entwurf  

Browserkompatibilität

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid WebviewChrome für AndroidFirefox für AndroidOpera für AndroidSafari auf iOSSamsung InternetNode.js
toStringChrome Vollständige Unterstützung 1Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 1IE Vollständige Unterstützung 5Opera Vollständige Unterstützung JaSafari Vollständige Unterstützung JaWebView Android Vollständige Unterstützung 1Chrome Android Vollständige Unterstützung 18Firefox Android Vollständige Unterstützung 4Opera Android Vollständige Unterstützung JaSafari iOS Vollständige Unterstützung JaSamsung Internet Android Vollständige Unterstützung 1.0nodejs Vollständige Unterstützung Ja
Support of toString revisionChrome Keine Unterstützung NeinEdge Keine Unterstützung NeinFirefox Vollständige Unterstützung 54IE Keine Unterstützung NeinOpera Keine Unterstützung NeinSafari Keine Unterstützung NeinWebView Android Keine Unterstützung NeinChrome Android Keine Unterstützung NeinFirefox Android Vollständige Unterstützung 54Opera Android Keine Unterstützung NeinSafari iOS Keine Unterstützung NeinSamsung Internet Android Keine Unterstützung Neinnodejs 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 der indentation Parameter nicht mehr gebraucht wird. Für mehr Details siehe Bug 761723.
  • Seit Firefox 38, erzeugt Function.prototype.toString() einen Fehler für Proxy Objekts (Bug 1100936).

Siehe auch