The toString()
method returns a string representing the source code of the function.
function.toString()
A string representing the source code of the function.
The Function
object overrides the toString
method inherited from Object
; it does not inherit Object.prototype.toString
. For user-defined Function
objects, the toString
method returns a string containing the source text segment which was used to define the function.
JavaScript calls the toString
method automatically when a Function
is to be represented as a text value, e.g. when a function is concatenated with a string.
The toString()
method will throw a TypeError
exception ("Function.prototype.toString called on incompatible object"), if its this
value object is not a Function
object. It will also throw for Proxy
objects, for example.
Function.prototype.toString.call('foo'); // TypeError var proxy = new Proxy(function() {}, {}); Function.prototype.toString.call(proxy); // TypeError
If the toString()
method is called on built-in function objects or a function created by Function.prototype.bind
, toString()
returns a native function string which looks like
"function () {\n [native code]\n}"
If the toString()
method is called on a function created by the Function
constructor, toString()
returns the source code of a synthesized function declaration named "anonymous" using the provided parameters and function body.
Function | Function.prototype.toString result |
---|---|
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}" |
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Initial definition. Implemented in JavaScript 1.1. |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Function.prototype.toString' in that specification. | Standard | Added more specific requirements for the string representation. |
Function.prototype.toString revisions proposal | Draft | Standardizes native function string, line endings. |
ECMAScript Latest Draft (ECMA-262) The definition of 'Function.prototype.toString' in that specification. | Draft |
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
Basic support | Yes | Yes | 1 | 5 | Yes | Yes |
Support of toString revision | No | No | 54 | No | No | No |
Mobile | |||||||
---|---|---|---|---|---|---|---|
Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | Yes | Yes | Yes | 4 | Yes | Yes | Yes |
Support of toString revision | No | No | No | 54 | No | No | No |
Server | |
---|---|
Node.js | |
Basic support | Yes |
Support of toString revision | No |
Function.prototype.toString()
has been implemented by saving the function's source. The decompiler was removed, so that the indentation
parameter is not needed any more. See bug 761723 for more details.Function.prototype.toString()
throws for Proxy
objects (bug 1100936).
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/toString