1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
---
title: JS_CallFunction
slug: Référence_de_JSAPI/JS_CallFunction
tags:
- JSAPI Reference
- SpiderMonkey
translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_CallFunction
---
<div>{{SpiderMonkeySidebar("JSAPI")}}</div>
<p><span class="short_text" id="result_box" lang="fr"><span class="hps">Appelle une fonction</span> <span class="hps">JS</span> <span class="hps">spécifié.</span></span></p>
<h2 id="Syntax" name="Syntax">Syntax</h2>
<pre class="brush: cpp">/* <span class="short_text" id="result_box" lang="fr"><span class="hps">Ajouté dans</span></span> SpiderMonkey 31 */
bool
JS_CallFunction(JSContext *cx, JS::HandleObject obj, JS::HandleFunction fun,
const JS::HandleValueArray& args,
JS::MutableHandleValue rval);
bool
JS_CallFunctionName(JSContext *cx, JS::HandleObject obj, const char *name,
const JS::HandleValueArray& args, JS::MutableHandleValue rval);
bool
JS_CallFunctionValue(JSContext *cx, JS::HandleObject obj, JS::HandleValue fval,
const JS::HandleValueArray& args, JS::MutableHandleValue rval);
/* <span class="short_text" id="result_box" lang="fr"><span class="hps">Obsolète</span></span> depuis JSAPI 30 */
bool
JS_CallFunction(JSContext *cx, JSObject *obj, JSFunction *fun, unsigned argc,
jsval *argv, jsval *rval);
bool
JS_CallFunctionName(JSContext *cx, JSObject *obj, const char *name, unsigned argc,
jsval *argv, jsval *rval);
bool
JS_CallFunctionValue(JSContext *cx, JSObject *obj, jsval fval, unsigned argc,
jsval *argv, jsval *rval);
</pre>
<table class="fullwidth-table">
<tbody>
<tr>
<th>Nom</th>
<th>Type</th>
<th>Description</th>
</tr>
<tr>
<td><code>cx</code></td>
<td>{{jsapixref("JSRuntime", "JSContext *")}}</td>
<td><span id="result_box" lang="fr"><span class="hps">Pointeur</span> <span class="hps">à un contexte</span> <span class="hps">JS</span> <span class="hps">à partir duquel </span><span class="hps">obtenir des informations</span> <span class="hps">d'exécution</span></span>. {{ Jsapi-requires-request() }}</td>
</tr>
<tr>
<td><code>obj</code></td>
<td>{{jsapixref("JSObject", "JS::HandleObject")}}</td>
<td><span id="result_box" lang="fr"><span class="hps">L'objet</span> <span class="hps">«courant»</span> <span class="hps">sur lequel la fonction</span> <span class="hps">opère</span><span>;</span> <span class="hps">l'objet spécifié</span> <span class="atn hps">ici est "</span><span>this</span><span>"</span> <span class="hps">lorsque la fonction</span> <span class="hps">est exécutée.</span></span></td>
</tr>
<tr>
<td><code>fun</code></td>
<td>{{jsapixref("JSFunction", "JS::HandleFunction")}}</td>
<td>
<p><span id="result_box" lang="fr"><span class="hps">Pointeur vers la</span> <span class="hps">fonction à appeler</span><span>.</span> </span><strong><code>fun</code></strong><span lang="fr"> <strong><span class="hps">devrait être une</span> <span class="hps">fonction native</span> <span class="hps">ou la fonction</span> <span class="hps">JSAPI</span><span class="atn">-</span><span>compilé</span></strong><span>.</span> <span class="hps">Voir ci-dessous.</span></span></p>
</td>
</tr>
<tr>
<td><code>name</code></td>
<td><code>const char *</code></td>
<td><span class="short_text" id="result_box" lang="fr"><span class="hps">Pointeur sur</span> <span class="hps">le nom de</span> <span class="hps">la fonction à appeler</span><span>.</span></span></td>
</tr>
<tr>
<td><code>fval</code></td>
<td>{{jsapixref("JS::Value", "JS::HandleValue")}}</td>
<td><span class="short_text" id="result_box" lang="fr"><span class="hps">Pointeur</span> <span class="hps">à la valeur</span> <span class="hps">de</span> <span class="hps">la fonction à appeler</span><span>.</span></span></td>
</tr>
<tr>
<td><code>args</code></td>
<td>{{jsapixref("JS::HandleValueArray", "const JS::HandleValueArray &")}}</td>
<td><span id="result_box" lang="fr"><span class="hps">Référence</span> <span class="atn hps">à tableau</span><span>l de</span> <span class="hps">valeurs d'arguments</span> <span class="hps">à passer à</span> <span class="hps">la fonction</span></span>. {{ Jsapi_minversion_inline("31") }}</td>
</tr>
<tr>
<td><code>argc</code></td>
<td><code>unsigned</code></td>
<td><span class="short_text" id="result_box" lang="fr"><span class="hps">Nombre d'arguments</span> <span class="hps">que vous</span> <span class="hps">passez à</span> <span class="hps">la fonction</span></span>. {{ obsolete_inline("jsapi30") }}</td>
</tr>
<tr>
<td><code>argv</code></td>
<td>{{jsapixref("Jsval", "jsval *")}}</td>
<td><span id="result_box" lang="fr"><span class="hps">Pointeur vers le tableau</span> <span class="hps">de</span> <span class="hps">valeurs d'arguments</span> <span class="hps">à passer à</span> <span class="hps">la fonction</span></span>. {{ obsolete_inline("jsapi30") }}</td>
</tr>
<tr>
<td><code>rval</code></td>
<td>{{jsapixref("JS::Value", "JS::MutableHandleValue")}}</td>
<td>
<p>Out parameter<span lang="fr"><span>.</span> <span class="hps">En cas de succès</span><span>,</span> </span><code>*rval</code><span lang="fr"> <span class="hps">reçoit la</span> <span class="hps">valeur de retour de</span> <span class="hps">l'appel de la fonction</span><span>.</span></span></p>
</td>
</tr>
</tbody>
</table>
<h2 id="Description" name="Description">Description</h2>
<p><code>JS_CallFunction </code><span lang="fr"> <span class="hps">appelle une fonction</span> <span class="hps">spécifiée</span><span>,</span> </span><code>fun</code><span lang="fr"><span>,</span> <span class="hps">sur un objet</span><span>,</span> </span><code>obj</code><span lang="fr"><span>.</span> <span class="hps">En termes d'exécution</span> <span class="hps">de la fonction</span><span>,</span> <span class="atn hps">l'</span><span>objet est traité comme</span> tel<span class="hps">.</span></span></p>
<p><code>JS_CallFunctionName</code><span lang="fr"> <span class="hps">appelle une fonction</span> <span class="hps">avec un nom spécifique</span><span>, le nom</span> <span class="hps">sur un</span> <span class="hps">objet </span></span><code>obj</code><span lang="fr"><span>.</span> <span class="hps">Si le moteur</span> <span class="hps">JS</span> <span class="hps">parvient pas à obtenir</span> <span class="hps">la fonction</span><span>,</span> <span class="hps">il retourne </span></span><code>false.</code></p>
<p><code>JS_CallFunctionValue</code> <span lang="fr"><span class="hps">appelle une fonction</span> <span class="hps">spécifiée</span></span>, <code>fval</code> <span lang="fr"><span class="hps">sur un objet</span></span> <code>obj</code>. <code>JS_CallFunctionValue(cx, obj, fval, args, rval)</code> <span class="short_text" id="result_box" lang="fr"><span class="hps">est</span> <span class="hps">analogue à</span> <span class="hps">la déclaration</span> <span class="hps">JavaScript</span></span> <code>rval = fval.apply(obj, args);</code>.</p>
<p><span id="result_box" lang="fr"><span class="hps">Dans </span></span><code>args</code><span lang="fr"><span>,</span> <span class="hps">passer</span> <span class="hps">une référence aux</span> <span class="hps">valeurs des arguments</span> <span class="hps">réels</span> <span class="hps">à utiliser.</span> <span class="hps">Il devrait y avoir</span> <span class="hps">une valeur pour chaque</span> <span class="hps">argument que vous</span> <span class="hps">passez</span> <span class="hps">à la fonction</span><span>;</span> <span class="hps">le nombre d'arguments</span> <span class="hps">que vous passez</span> <span class="hps">peut</span> <span class="hps">être différent du</span> <span class="atn hps">nombre d'</span><span>arguments définis pour</span> <span class="hps">la fonction</span><span>.</span></span></p>
<div class="note">
<p><span class="short_text" id="result_box" lang="fr"><span class="hps">Obsolète</span> <span class="hps">depuis</span> <span class="hps">JSAPI</span> <span class="hps">30</span></span>.</p>
<p>Dans <code>argc</code>, <span id="result_box" lang="fr"><span class="hps">indiquer le nombre</span> <span class="hps">d'arguments passés à</span> <span class="hps">la fonction</span></span>. Dans <code>argv</code>, <span id="result_box" lang="fr"><span class="hps">passer</span> <span class="hps">un pointeur vers</span> <span class="hps">les</span> <span class="hps">valeurs d'arguments</span> <span class="hps">réels</span> <span class="hps">à utiliser.</span></span></p>
</div>
<p><code>rval</code><span id="result_box" lang="fr"><span class="hps"> est</span> <span class="hps">un pointeur vers une</span> <span class="hps">variable qui contiendra</span> <span class="hps">la valeur de retour</span> <span class="hps">de</span> <span class="hps">la fonction</span><span>, le cas échéant</span><span>,</span> <span class="hps">sur l'exécution</span> <span class="hps">de la fonction</span> <span class="hps">réussie</span><span>.</span></span></p>
<p><span class="short_text" id="result_box" lang="fr"><span class="hps">Si</span> <span class="hps">la fonction appelée</span> <span class="hps">s'exécute</span> <span class="hps">avec succès</span></span>, <code>JS_CallFunction</code> retourne <code>true</code>. Sinon il retourne <code>false</code>, et <code>rval</code> est ind<span id="result_box" lang="fr"><span>é</span></span>finit.</p>
<p></p><div class="warning"><span class="short_text" id="result_box" lang="fr"><span class="hps">L' appel de </span></span><code>JS_CallFunction</code> <span id="result_box" lang="fr"><span class="hps">est sûr</span> <span class="hps">que si</span> <span class="hps">l'argument</span> </span><var>fun</var><span lang="fr"> <span class="hps">pourrait</span> <span class="hps">être passée à</span></span> <code>JS_GetFunctionObject</code> <span class="short_text" id="result_box" lang="fr"><span class="hps">sans encombre</span></span>: <span id="result_box" lang="fr"><span class="hps">autrement dit, il</span> <span class="hps">est une fonction</span> <span class="hps">mise en oeuvre par</span> <span class="hps">un</span></span><span class="lang lang-en"> <code>JSNative</code> ou <code>JSFastNative</code> ou </span><span class="short_text" id="result_box" lang="fr"><span class="hps">le</span> <span class="hps">résultat d'un appel</span> <span class="hps">à</span></span><span class="lang lang-en"> <code>JS_CompileFunction</code>, <code>JS_CompileUCFunction</code>, <code>JS_CompileFunctionForPrincipals</code>, ou <code>JS_CompileUCFunctionForPrincipals</code></span>. <span id="result_box" lang="fr"><span class="hps">Passant</span> <span class="hps">toute autre fonction</span> <span class="hps">pointeur</span> <span class="hps">JS</span> <span class="hps">peut conduire à</span> <span class="hps">un crash </span><span class="hps">ou pour pire</span></span>.</div><p></p>
<h2 id="See_also" name="See_also"><span class="short_text" id="result_box" lang="fr"><span class="hps">Voir aussi</span></span></h2>
<ul>
<li>{{ LXRSearch("ident", "i", "JS_CallFunction") }}</li>
<li>{{ LXRSearch("ident", "i", "JS_CallFunctionName") }}</li>
<li>{{ LXRSearch("ident", "i", "JS_CallFunctionValue") }}</li>
<li>{{jsapixref("JS_CompileFunction")}}</li>
<li>{{jsapixref("JS_DefineFunction")}}</li>
<li>{{jsapixref("JS_DefineFunctions")}}</li>
<li>{{jsapixref("JS_GetFunctionObject")}}</li>
<li>{{jsapixref("JS_NewFunction")}}</li>
<li>{{jsapixref("JS_ValueToFunction")}}</li>
<li>{{bug(965830)}}</li>
</ul>
|