0

我在我的 C/C++ 应用程序中嵌入了 SpiderMonkey (mozila javascript) 解释器/引擎。我以编程方式加载一个 javascript 脚本,并想测试(从我的 C/C++ 代码)是否在这个脚本中存在/定义了某个函数。

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

Tnx,维蒂卡

4

2 回答 2

1

据我所知,this默认情况下,是指全局范围。这样你就可以:

(function() {
    var globals = this;
    for (var i in globals) {
        if (typeof globals[i] == 'function') {
            // a function named i is defined.
        }
    }
})();
于 2011-01-02T03:05:34.837 回答
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));
于 2013-12-13T02:56:12.120 回答