0

私はC/C ++アプリケーションにSpiderMonkey(mozila javascript)インタープリター/エンジンを埋め込んでいます。プログラムでJavaScriptスクリプトをロードし、このスクリプトに特定の関数が存在するか、定義されているかどうかを(C / C ++コードから)テストしたいと思います。

それを行う方法はありますか?たぶん、与えられたスクリプトのすべての関数をリストする方法ですか?

Tnx、Vertilka

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 に答える