Function.prototype.toString()

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

* Some parts of this feature may have varying levels of support.

O método toString() retorna uma string representando o código fonte da função.

Experimente

function sum(a, b) {
  return a + b;
}

console.log(sum.toString());
// Expected output: "function sum(a, b) {
//                     return a + b;
//                   }"

console.log(Math.abs.toString());
// Expected output: "function abs() { [native code] }"

Sintaxe

function.toString()

Valor de retorno

Uma string representando o código fonte da função.

Descrição

O objeto da Function substitui o método toString herdado de Object; ele não herda Object.prototype.toString. Para objetos Function definidos pelo usuário, o método toString retorna uma string contendo o seguimento de texto de origem que foi usado para definir a função

O JavaScript chama o método toString automaticamente quando uma Function pode ser representada como um valor de texto. e.x. quando uma função é concatenada com uma string.

O método toString() lançará uma exceção do tipo TypeError ("Function.prototype.toString called on incompatible object") se o valor this do objeto não é um objeto do tipo Function.

js
Function.prototype.toString.call("foo"); // TypeError

Se o método toString() é chamado por objetos de funções embutidas ou por uma função criada por Function.prototype.bind, toString() retorna uma string de uma função nativa que parece

js
"function () {\n    [native code]\n}";

Se o método toString() é chamado por uma função criada pelo contrutor de Function, toString() retorna o código fonte de uma declaração de função sintetizada chamada "anonymous" usando os parâmetros passados e o corpo da função.

Exemplos

Função Function.prototype.toString resultado
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}"

Especificações

Specification
ECMAScript® 2025 Language Specification
# sec-function.prototype.tostring

Compatibilidade com navegadores

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
toString
Implements Function.prototype.toString revision

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

Notas específicas do Firefox

  • Desde o Firefox 17 a função Function.prototype.toString() tem sido implementada salvando o fonte da função. O descompilador foi removido o que torna o parâmetro indentation desnecessário. Veja Erro do Firefox 761723 para mais detalhes.
  • Do Firefox 38 para o 63 a função Function.prototype.toString() lançava exceções para objetos Proxy (Erro do Firefox 1100936 e Erro do Firefox 1440468).

Veja também