Function.prototype.toString()

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

Experimente

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 Language Specification
# sec-function.prototype.tostring

Compatibilidade com navegadores

BCD tables only load in the browser

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