--- title: Référence de JSAPI slug: Référence_de_JSAPI translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference ---
JSAPI est l'implémentation en C du moteur JavaScript SpiderMonkey. Pour apprendre à utiliser JSAPI, lisez le Guide utilisateur JSAPI [en] et le JSAPI Cookbook [en].
Compartiments :
Méthodes de locales :
Types de méthodes de locales :
Exécution simple de code JavaScript :
Exécution compilée de code JavaScript dans un objet JSScript
exécutable à la volée :
Compilation de code JavaScript dans une fonction :
Méthodes C/C++ de levée et de capture d'exceptions JavaScript :
Fonctions de conversion d'erreur JavaScript en exceptions (et inversement) :
Constantes jsval
:
Fonctions et macros de détermination de types jsval
:
Méthodes haut-niveau de conversion de types pour l'encapsulation/désencapsulation d'arguments de fonctions.
Conversions de types JavaScript. Ces méthodes peuvent être appliquées à n'importe-quel type de variable jsval
s. Elles peuvent potentiellement retourner des objets. Par exemple, JS_ValueToObject(cx, s)
où s
est une chaîne de caractères renvoie un nouvel objet de type String
. Ces fonctions peuvent appeler des méthodes JavaScript. Par exemple, JS_ValueToString(cx, obj)
peut appeler obj.toString()
.
Macros à éxecution rapide sans contrôle de type. Ces macros ne doivent pas être appliquées à des valeurs dont le type n'est pas précisément connu au départ. Comme les 'casts' C, elles peuvent planter l'éxecution si elles sont appliquées à des types/valeurs incorrectes. Elles ne renvoient jamais d'objet et n'appellent jamais de code JavaScript directement.
Function de retour de type (équivalent à typeof
) :
Functions de comparaison :
Ces fonctions se comportent comme les méthodes C Standard de type malloc
, à l'exception des erreurs qui sont rapportées via les APIs de gestion d'erreur de SPiderMonkey plutôt que via errno
. Ces fonctions autorisent également SpiderMonkey à contrôler la quantité de bits alloués en mémoire :
Objets JavaScripts, chaînes de caractères, et nombres à virgule flottante sont gérés par le ramasse-miette. Ces fonctions permettent d'accéder à la gestion du ramasse-miette :
Le reste de ces APIs permet de protéger les objets en mémoire de leur destruction par le ramasse-miette avant que l'application n'ai cessé de les utiliser.
Si une variable est racine (root), tout élément pointé en référence par cette variable ne sera pas collectée par le ramasse-miette. Des erreurs dans la gestion des variables racines sont une cause fréquente de plantages inexpliqués difficiles à détecter.
L'utilisation de portées locales des variables racines sont une autre méthode de prévenir les objets du passage du ramasse-miette.
{{ Jsapi_minversion_inline("1.8") }} Si un objet contient des références vers d'autres éléments dans le ramasse-miette qui ne sont pas stockés bia le moteur de structure de données (slots) de SpiderMonkey, il doit implémenter la méthode JSTraceOp
pour permettre au ramasse-miette de traverser ses objets référencés. Autrement, le ramasse-miette ne pourra pas détecter et collecter les objets potentiellement éligibles, provoquant un plantage. (Dans SpiderMonkey 1.7 et antérieur, la méthode JSMarkOp
est utilisée. Cette méthode est notée deprecated dans la version 1.8 de SpiderMonkey à venir.)
Les APIs de traçage sont utilisées par le ramasse-miette et la méthode JSMarkOp
. Les applications JSAPI peuvent également les utiliser pour examiner le contenu des objets. (Par exemple, ces APIs procurent une interaction fine entre le ramasse-miette JavaScript et les autres types de ramasse-miette.)
APIs du ramasse-miette diverses :
JS_GetEmptyString()
{{ jsapi_minversion_inline("1.8.5") }}Interning strings tells the SpiderMonkey engine to reuse existing string objects when possible.
The character data for external strings is stored in memory provided by the application. Applications can use this to avoid copying data back and forth between SpiderMonkey's heap and application memory.
JS_AddExternalStringFinalizer()
JS_RemoveExternalStringFinalizer()
JS_GetExternalStringGCType()
JS_NewExternalString()
JS_NewExternalStringWithClosure()
JS_GetExternalStringClosure()
JS_IsExternalString()
JS_NewDateObject()
{{ jsapi_minversion_inline("1.8.5") }}JS_NewDateObjectMsec()
{{ jsapi_minversion_inline("1.8.5") }}JS_ObjectIsDate()
These functions correspond directly to the ways scripts access object properties:
The following functions are lower-level, allowing the JSAPI application more access to details of how properties are implemented. "Define" is a lower-level version of "set" that provides access to extra settings and does not call setters. Similarly, "lookup" is a lower-level version of "get" that offers extra options and does not call getters.
The following functions behave like JS_GetProperty
and JS_GetPropertyById
except when operating on E4X XML objects.
A SpiderMonkey extension allows a native function to return an lvalue—that is, a reference to a property of an object:
A jsid
is kind of like a jsval
, only different. A handful of APIs use jsid
s instead of jsval
s for property names: JS_CheckAccess
, JS_Enumerate
, JS_GetMethodById
, and JS_NextProperty
.
jsid
constants:
Function and macros for checking the type of a jsid
:
These API features are used to define custom classes—object types that are implemented in C/C++ code but accessible from JavaScript.
Adding native properties and methods to classes:
JSFastNative
methods use these macros: {{ jsapi_minversion_inline("1.8") }}
The behavior of a JSClass
and its instances can be customized in many ways using callback functions.
JSClass method types:
JSExtendedClass method types:
JSObjectOps method types:
JSXMLObjectOps method types:
These stub functions can be used when creating a custom JSClass
:
The behavior of a JSClass
can be customized using these flags:
Calling a function or a method of an object:
Function accessors:
Creating functions:
{{ jsapi_minversion_inline("1.8.1") }} Security callbacks can be set per-runtime or per-context.
The following functions support the SpiderMonkey threading model.
Note: JS_THREADSAFE is now permanently on.
JSAPI 1.7 and earlier They are only available in JS_THREADSAFE
builds.
{{ jsapi_minversion_inline("1.8") }} These functions are always available, but in non-JS_THREADSAFE
builds, they do nothing.
The following functions are always available, but in non-JS_THREADSAFE
builds, they do nothing:
Native function types:
Other callback types:
JSFunctionCallback
- used by JS_SetFunctionCallback()
See also Classes, above.
jsperf.h
)