2010-10-21 5 views
0

J'embarque l'interpréteur/moteur SpiderMonkey (mozila javascript) dans mon application C/C++. Je charge par programme un script javascript et je veux tester (à partir de mon code C/C++) si une certaine fonction existe/est définie dans ce script.Test des noms de fonctions en script javascript (moteur SpiderMonkey)

est-il un moyen de faire cela? peut-être un moyen de lister toutes les fonctions dans un script donné?

Tnx, Vertilka

Répondre

1

Pour autant que je sache, this, par défaut, fait référence à la portée globale. Ainsi, vous pouvez:

(function() { 
    var globals = this; 
    for (var i in globals) { 
     if (typeof globals[i] == 'function') { 
      // a function named i is defined. 
     } 
    } 
})(); 
0

En C, avec SpiderMonkey, vous pouvez tester pour une certaine programatically fonction:

JSObject *callable = NULL; 
    JSObject *global; 
    JSBool jb; 
    jsval v = { 0 }; 

    jb = JS_GetProperty(context, global, "function_name", &v); 
    g_assert_cmpint(jb, ==, JS_TRUE); 
    g_assert(JSVAL_IS_OBJECT(v)); 
    g_assert(!JSVAL_IS_NULL(v)); 
    g_assert(!JSVAL_IS_VOID(v)); 

    callable = JSVAL_TO_OBJECT(v); 
    g_assert(callable); 
    g_assert(JS_ObjectIsFunction(context, callable)); 
Questions connexes