mozilla
Vos résultats de recherche

    Function.caller

    Non standard
    Cette fonctionnalité n'est ni standard, ni en voie de standardisation. Ne l'utilisez pas pour des sites accessibles sur le Web : elle ne fonctionnera pas pour tout utilisateur. Il peut également y avoir d'importantes incompatibilités entre les implémentations et son comportement peut être modifié dans le futur.

    Résumé

    La propriété function.caller renvoie la fonction qui a appelé la fonction donnée.

    Description

    Si la fonction f a été invoquée par du code situé au plus haut niveau, la valeur de f.caller sera null, sinon, ce sera la fonction qui a appelé f.

    Cette propriété remplace la propriété obsolète arguments.caller de l'objet arguments.

    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

    Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Support simple (Oui) 1.0 (1.7 ou moins) (Oui) (Oui) (Oui)
    Fonctionnalité Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Support simple (Oui) (Oui) 1.0 (1.0) (Oui) (Oui) (Oui)

    Voir aussi

    • Le bug d'implémentation pour SpiderMonkey bug 65683

    Étiquettes et contributeurs liés au document

    Contributors to this page: BenoitL, Arzach, SphinxKnight, teoli, Jeremie
    Dernière mise à jour par : SphinxKnight,