Проверка имен функций в скрипте javascript (движок SpiderMonkey)

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

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

Tnx, Вертилка


person Vertilka    schedule 21.10.2010    source источник


Ответы (2)


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

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

В 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));
person Juan Manuel    schedule 13.12.2013