Comparaison de révisions

caller

Révision 273477 :

Révision 273477 par Arzach le

Révision 221922 :

Révision 221922 par Arzach le

Titre :
caller
caller
Identifiant d'URL :
JavaScript/Référence_JavaScript/Référence_JavaScript/Objets_globaux/Function/caller
JavaScript/Référence_JavaScript/Référence_JavaScript/Objets_globaux/Function/caller
Contenu :

Révision 273477
Révision 221922
t7    <p>t
8      {{ Non-standard_header() }}
9    </p>
10    <h3 id="R.C3.A9sum.C3.A9" name="R.C3.A9sum.C3.A9">
11      Résumé
12    </h3>
13    <p>
14      Renvoie la fonction qui a invoqué la fonction spécifiée.
15    </p>
16    <p>
17      Cette propriété ne fait pas partie de la norme ECMA-262 Edi
>tion 3. Elle est implémentée au moins dans <a href="/fr/SpiderMon 
>key" title="fr/SpiderMonkey">SpiderMonkey</a> (le moteur JavaScri 
>pt de Mozilla) (voir le {{ Bug("65683") }}) et JScript. 
18    </p>
19    <table class="fullwidth-table">
20      <tbody>
21        <tr>
22          <td class="header" colspan="2">
23            Propriété de <a href="/fr/R%C3%A9f%C3%A9rence_de_Java
>Script_1.5_Core/Objets_globaux/Function" title="fr/Référence_de_J 
>avaScript_1.5_Core/Objets_globaux/Function">Function</a> 
24          </td>
25        </tr>
26        <tr>
27          <td>
28            Implémentation&nbsp;:
29          </td>
30          <td>
31            JavaScript 1.5
32          </td>
33        </tr>
34      </tbody>
35    </table>
36    <h3 id="Description" name="Description">
37      Description
38    </h3>
39    <p>
40      Si la fonction <code>f</code> a été invoquée depuis du code
> de premier niveau, la valeur de <code>f.caller</code> est <code> 
>null</code>&nbsp;; autrement il s'agit de la fonction qui a appel 
>é <code>f</code>. 
41    </p>
42    <p>
43      Cette propriété remplace l'ancienne propriété <a href="/fr/
>R%C3%A9f%C3%A9rence_de_JavaScript_1.5_Core/Fonctions/arguments/ca 
>ller" title="fr/Référence_de_JavaScript_1.5_Core/Fonctions/argume 
>nts/caller">arguments.caller</a> dont l'utilisation est déconseil 
>lée. 
44    </p>
45    <h3 id="Notes" name="Notes">
46      Notes
47    </h3>
48    <p>
49      Notez que dans le cas d'une récursion, il n'est pas possibl
>e de reconstruire la pile d'appel par cette propriété. Soit&nbsp; 
>: 
50    </p>
51    <pre class="eval">
52function f(n) { g(n-1) }
53function g(n) { if(n&gt;0) f(n); else stop() }
54f(2)
55</pre>
56    <p>
57      Au moment de l'appel de <code>stop()</code> la pile d'appel
> sera&nbsp;: 
58    </p>
59    <pre class="eval">
60f(2) -&gt; g(1) -&gt; f(1) -&gt; g(0) -&gt; stop()
61</pre>
62    <p>
63      La condition suivante est vraie&nbsp;:
64    </p>
65    <pre class="eval">
66stop.caller === g &amp;&amp; f.caller === g &amp;&amp; g.caller =
>== f 
67</pre>
68    <p>
69      Par conséquent, si vous essayiez d'obtenir la trace de la p
>ile dans la fonction <code>stop()</code> comme ceci&nbsp;: 
70    </p>
71    <pre class="eval">
72var f = stop;
73var stack = "Trace de la pile :";
74while (f) {
75  stack += "\n" + f.name;
76  f = f.caller;
77}
78</pre>
79    <p>
80      …la boucle ne s'arrêterait jamais.
81    </p>
82    <p>
83      La propriété spéciale <code>__caller__</code>, qui renvoyai
>t l'objet d'activation de l'appelant et permettait ainsi de recon 
>struire la pile a été retirée pour des raisons de sécurité. 
84    </p>
85    <h3 id="Exemples" name="Exemples">
86      Exemples
87    </h3>
88    <h4 id="Exemple_:_test_de_la_valeur_de_la_propri.C3.A9t.C3.A9
>_caller_d.27une_fonction" name="Exemple_:_test_de_la_valeur_de_la 
>_propri.C3.A9t.C3.A9_caller_d.27une_fonction"> 
89      Exemple&nbsp;: test de la valeur de la propriété <code>call
>er</code> d'une fonction 
90    </h4>
91    <p>
92      Le code suivant vérifie la valeur de la propriété <code>cal
>ler</code> d'une fonction. 
93    </p>
94    <pre class="eval">
95function maFonction() {
96   if (maFonction.caller == null) {
97      return ("Cette fonction a été appelée depuis le premier niv
>eau de code."); 
98   } else
99      return ("L'appelant de cette fonction est " + maFonction.ca
>ller); 
100}
101</pre>
102    <p>
103      {{ languages( { "en": "en/Core_JavaScript_1.5_Reference/Glo
>bal_Objects/Function/caller", "pl": "pl/Dokumentacja_j\u0119zyka_ 
>JavaScript_1.5/Obiekty/Function/caller" } ) }} 
104    </p>

Retour à l'historique