Function.caller

No est谩ndar
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.

Resumen

La propiedad function.caller retorna la funci贸n que llam贸 a la funci贸n especificada.

Descripci贸n

Si la funci贸n f fue llamada por desde nivel raiz (top level code), el valor de f.caller es null, de lo contrario se retorna la funci贸n que llam贸 a f.

Esta propiedad reemplaza a la propiedad obsoleta arguments.caller del objeto arguments.

la propiedad especial __caller__, la cual retornaba el objeto de activaci贸n del llamador y permit铆a reconstruir la pila de llamadas, ha sido removida por motivos de seguridad.

Notas

En caso de recursi贸n se puede reconstruir la pila de llamada utilizando esta propiedad, tal como se muestra a continuaci贸n:

function f(n) { g(n - 1); }
function g(n) { if (n > 0) { f(n); } else { stop(); } }
f(2);

Al momento de ejecutar stop() este se llama con la siguiente pila de llamadas:

f(2) -> g(1) -> f(1) -> g(0) -> stop()

Siendo verdadero la siguiente consideraci贸n:

stop.caller === g && f.caller === g && g.caller === f

Por lo tanto si se intenta obtener el rastro de llamadas (stack trace) de la funci贸n stop() como se muestra a continuaci贸n:

var f = stop;
var stack = 'Stack trace:';
while (f) {
  stack += '\n' + f.name;
  f = f.caller;
}

se provocar谩 una bucle que nunca termina.

Ejemplos

Ejemplo: Verificar el valor de la propiedad caller de una funci贸n

El siguiente c贸digo verifica el valor de la propiedad caller de una funci贸n.

function myFunc() {
  if (myFunc.caller == null) {
    return 'The function was called from the top!';
  } else {
    return 'This function\'s caller was ' + myFunc.caller;
  }
}

Especificaci贸n

No es parte de ninguna especificaci贸n. Se implementa en JavaScript 1.5.

Compatiblilidad de Navegadores

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Soporte B谩sico (Yes) 1.0 (1.7 o anterior) (Yes) (Yes) (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Soporte B谩sico (Yes) (Yes) 1.0 (1.0) (Yes) (Yes) (Yes)

V茅ase tambi茅n

  • Problema de implementaci贸n para SpiderMonkey error 65683