2010-10-21 53 views
0

我在C/C++应用程序中嵌入了SpiderMonkey(mozila javascript)解释器/引擎。我编程加载一个JavaScript脚本,并希望测试(从我的C/C++代码)如果某个函数存在/定义在此脚本中。在JavaScript脚本(SpiderMonkey引擎)中测试函数名称

有没有办法做到这一点? 也许可以列出给定脚本中的所有函数?

TNX, Vertilka

回答

1

据我所知,this,默认情况下,是指全球范围内。所以,你可以:

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

在C,与SpiderMonkey的,你可以通过编程测试某种功能:

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));