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.

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

"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

Especificação Status Comentário
ECMAScript 1st Edition (ECMA-262) Padrão Definição inicial. Implementado no JavaScript 1.1.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Function.prototype.toString' in that specification.
Padrão Mais requisitos específicos foram incluídos para representação de string.
Function.prototype.toString revisions proposal Rascunho Padroniza a função de string navida e fins de linha.
ECMAScript (ECMA-262)
The definition of 'Function.prototype.toString' in that specification.
Padrão em tempo real

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 bug 761723 para mais detalhes.
  • Do Firefox 38 para o 63 a função Function.prototype.toString() lançava exceções para objetos Proxy (bug 1100936 e bug 1440468).

Veja também