Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.
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 julho de 2015.
* Some parts of this feature may have varying levels of support.
O métodotoString() retorna uma string representando o código fonte da função.
In this article
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 daFunction substitui o métodotoString herdado deObject; ele não herdaObject.prototype.toString. Para objetosFunction definidos pelo usuário, o métodotoString retorna uma string contendo o seguimento de texto de origem que foi usado para definir a função
O JavaScript chama o métodotoString automaticamente quando umaFunction pode ser representada como um valor de texto. e.x. quando uma função é concatenada com uma string.
O métodotoString() lançará uma exceção do tipoTypeError ("Function.prototype.toString called on incompatible object") se o valorthis do objeto não é um objeto do tipoFunction.
Function.prototype.toString.call("foo"); // TypeErrorSe o métodotoString() é chamado por objetos de funções embutidas ou por uma função criada porFunction.prototype.bind,toString() retorna uma string de uma função nativa que parece
"function () {\n [native code]\n}";Se o métodotoString() é chamado por uma função criada pelo contrutor deFunction,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® 2026 Language Specification> # sec-function.prototype.tostring> |
Compatibilidade com navegadores
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âmetroindentationdesnecessário. VejaErro do Firefox 761723 para mais detalhes. - Do Firefox 38 para o 63 a função
Function.prototype.toString()lançava exceções para objetosProxy(Erro do Firefox 1100936 eErro do Firefox 1440468).