No estándar: Esta función no está estandarizada. No recomendamos usar funciones no estándar en producción, ya que tienen un soporte limitado en los navegadores y pueden cambiar o eliminarse. Sin embargo, pueden ser una alternativa adecuada en casos especÃficos donde no exista una opción estándar.
ResumenLa propiedad function.caller
retorna la función que llamó a la función especificada.
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.
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 propiedadcaller
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.
Compatiblilidad de Navegadores Véase tambiénRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4