This translation is incomplete. Please help translate this article from English.
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.
La propietat function.caller
retorna la funció que ha invocat la funció especificada.
Descripció
SI la funció f
ha estat invocada pel codi de nivell superior, el valor de f.caller
és null
, sinó és la funció que ha cridat f
.
Aquesta propietat reemplaça la propietat obsoleta arguments.caller
de l'objecte 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.
Notes
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.
Exemples
Checking the value of a function's caller
property
El 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; } }
Especificacions
No forma part de cap especificació. Implementat en JavaScript 1.5.
Compatibilitat amb navegadors
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suport bàsic | (Yes) | 1.0 (1.7 or earlier) | 8.0 | (Yes) | (Yes) |
Característica | Android | Chrome per Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suport bàsic | (Yes) | (Yes) | 1.0 (1.0) | (Yes) | (Yes) | (Yes) |
Vegeu també
- Error d'Implementació de SpiderMonkey errada 65683