--- title: Function.caller slug: Web/JavaScript/Reference/Global_Objects/Function/caller translation_of: Web/JavaScript/Reference/Global_Objects/Function/caller ---
La propietat function.caller
retorna la funció que ha invocat la funció especificada.
SI la funció f
ha estat invocada pel codi de nivell superior, el valor de f.caller
és {{jsxref("null")}}, sinó és la funció que ha cridat f
.
Aquesta propietat reemplaça la propietat obsoleta {{jsxref("Functions/arguments/caller", "arguments.caller")}} de l'objecte {{jsxref("Functions/arguments", "arguments")}}.
La propietat especial __caller__
, la qual retorna l'objecte activatwhich returned the activation object of the caller thus allowing to reconstruct the stack, was removed for security reasons.
Vegeu que en cas de recursió, no podeu reconstruir la pila de crida fent servir aquesta propietat. C that in case of recursion, you can't reconstruct the call stack using this property. Tingueu en compte:
function f(n) { g(n - 1); } function g(n) { if (n > 0) { f(n); } else { stop(); } } f(2);
At the moment stop()
is called the call stack will be:
f(2) -> g(1) -> f(1) -> g(0) -> stop()
El següent és cert:
stop.caller === g && f.caller === g && g.caller === f
so if you tried to get the stack trace in the stop()
function like this:
var f = stop; var stack = 'Stack trace:'; while (f) { stack += '\n' + f.name; f = f.caller; }
El bucle mai s'aturaria.
caller
propertyEl codi següent comprova que el valor following code checks the value a function's caller
property.
function myFunc() { if (myFunc.caller == null) { return 'The function was called from the top!'; } else { return 'This function\'s caller was ' + myFunc.caller; } }
No forma part de cap especificació. Implementat en JavaScript 1.5.
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suport bàsic | {{CompatVersionUnknown}} | {{CompatGeckoDesktop("1.0")}} | 8.0 | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
Característica | Android | Chrome per Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suport bàsic | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile("1.0")}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |