--- title: Function.caller slug: Web/JavaScript/Reference/Global_Objects/Function/caller tags: - Função - JavaScript - Non-standard - Propriedades translation_of: Web/JavaScript/Reference/Global_Objects/Function/caller ---
A propriedade function.caller
retorna a função que invocou a função especificada.
Se a função f
foi invocada pelo codigo mais alto nível, o valor de f.caller
é {{jsxref("null")}}, caso contrario, o valor será a função a qual invocou f
.
Esta propriedade substitui a propriedade obsoleta {{jsxref("Functions/arguments/caller", "arguments.caller")}} do objeto {{jsxref("Functions/arguments", "arguments")}}.
A propriedade especial __caller__
, a qual retornou o objeto de ativação do chamador, permitindo assin reconstruir o stack, foi removido por motivo de segurança.
Note que no caso de recurção, você não pode reconstruir o stack de chamadas usando esta propriedade. Considere:
function f(n) { g(n - 1); } function g(n) { if (n > 0) { f(n); } else { stop(); } } f(2);
No momento em que stop()
é chamado o stack será:
f(2) -> g(1) -> f(1) -> g(0) -> stop()
O seguinte é true:
stop.caller === g && f.caller === g && g.caller === f
então se você tentou recuperar o stack trace na função stop()
assim:
var f = stop; var stack = 'Stack trace:'; while (f) { stack += '\n' + f.name; f = f.caller; }
o loop nunca irá parar.
caller
de uma funçãoO código a seguir verifica o valor da propriedade caller
de uma função.
function myFunc() { if (myFunc.caller == null) { return 'The function was called from the top!'; } else { return 'This function\'s caller was ' + myFunc.caller; } }
Não faz parte de nenhuma especificação. Implementado no JavaScript 1.5.
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suporte básico | {{CompatVersionUnknown}} | {{CompatGeckoDesktop("1.0")}} | 8.0 | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suporte básico | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile("1.0")}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |