Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Function.caller
Non standard: Cette fonctionnalité n'est pas standardisée. Nous déconseillons d'utiliser des fonctionnalités non standard en production, car leur prise en charge par les navigateurs est limitée, et elles peuvent être modifiées ou supprimées. Toutefois, elles peuvent constituer une alternative appropriée dans certains cas où aucune option standard n'existe.
La propriétéfunction.caller renvoie la fonction qui a appelé la fonction donnée. Cette propriété est interdite en mode strict.
Dans cet article
Description
Si la fonctionf a été invoquée par du code situé au plus haut niveau, la valeur def.caller seranull, sinon, ce sera la fonction qui a appeléf.
Cette propriété remplace la propriété obsolètearguments.caller de l'objetarguments.
La propriété spéciale__caller__ qui renvoyait l'objet qui dans lequel était fait l'appel a été supprimée pour des raisons de sécurités.
Notes
Dans une fonction récursive, cette propriété ne peut pas être utilisée pour reconstituer la pile d'appels (call stack). Par exemple, si on a :
function f(n) { g(n - 1);}function g(n) { if (n > 0) { f(n); } else { stop(); }}f(2);Au moment oùstop() est appelé, la pile sera :
f(2) -> g(1) -> f(1) -> g(0) -> stop()Et ceci est vrai :
stop.caller === g && f.caller === g && g.caller === f;Donc si on essaie d'obtenir la pile de cette façon :
var f = stop;var stack = "Stack trace:";while (f) { stack += "\n" + f.name; f = f.caller;}la boucle ne s'arrêterait jamais.
Exemples
>Vérifier la valeur de la propriétécaller
Dans l'exemple suivant, on verifie la propriétécaller de la fonction.
function maFonction() { if (maFonction.caller == null) { return "Fonction appelée au plus haut niveau !"; } else { return "Fonction appelée par " + maFonction.caller; }}Spécifications
Ne fait partie d'aucune spécification. Implémentée avec JavaScript 1.5.
Compatibilité des navigateurs
Voir aussi
- Le bug d'implémentation pour SpiderMonkeybug Firefox 65683