Non-standard
This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

A propriedade function.caller retorna a função que invocou a função especificada.

Descrição

Se a função f foi invocada pelo codigo mais alto nível, o valor de f.caller é null, caso contrario, o valor será a função a qual invocou f.

Esta propriedade substitui a propriedade obsoleta arguments.caller do objeto 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.

Notas

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.

Exemplos

Verificando o valor da propriedade caller de uma função

O 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;
  }
}

Especificações

Não faz parte de nenhuma especificação. Implementado no JavaScript 1.5.

Compatibilidade com os navegadores

Estamos convertendo nossos dados de compatibilidade para o formato JSON. Esta tabela de compatibilidade ainda usa o formato antigo, pois ainda não convertemos os dados que ela contém. Descubra como você pode ajudar!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Suporte básico (Yes) 1.0 (1.7 or earlier) 8.0 (Yes) (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Suporte básico (Yes) (Yes) 1.0 (1.0) (Yes) (Yes) (Yes)

Ver também

Etiquetas do documento e colaboradores

Colaboradores desta página: teoli, raduq
Última atualização por: teoli,