Проверка имен функций в скрипте javascript (движок SpiderMonkey) - PullRequest
0 голосов
/ 21 октября 2010

Я встраиваю интерпретатор / движок SpiderMonkey (mozila javascript) в мое приложение на C / C ++. я программно загружаю скрипт javascript и хочу проверить (из моего кода C / C ++), существует ли определенная функция / определена в этом скрипте.

есть ли способ сделать это? может быть, способ перечислить все функции в данном сценарии?

Tnx, Vertilka

Ответы [ 2 ]

1 голос
/ 02 января 2011

Насколько я знаю, this по умолчанию относится к глобальной области видимости.Так что вы можете:

(function() {
    var globals = this;
    for (var i in globals) {
        if (typeof globals[i] == 'function') {
            // a function named i is defined.
        }
    }
})();
0 голосов
/ 13 декабря 2013

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