私はC/C ++アプリケーションにSpiderMonkey(mozila javascript)インタープリター/エンジンを埋め込んでいます。プログラムでJavaScriptスクリプトをロードし、このスクリプトに特定の関数が存在するか、定義されているかどうかを(C / C ++コードから)テストしたいと思います。
それを行う方法はありますか?たぶん、与えられたスクリプトのすべての関数をリストする方法ですか?
Tnx、Vertilka
私はC/C ++アプリケーションにSpiderMonkey(mozila javascript)インタープリター/エンジンを埋め込んでいます。プログラムでJavaScriptスクリプトをロードし、このスクリプトに特定の関数が存在するか、定義されているかどうかを(C / C ++コードから)テストしたいと思います。
それを行う方法はありますか?たぶん、与えられたスクリプトのすべての関数をリストする方法ですか?
Tnx、Vertilka
私の知る限り、this
デフォルトでは、グローバルスコープを指します。だからあなたはできる:
(function() {
var globals = this;
for (var i in globals) {
if (typeof globals[i] == 'function') {
// a function named i is defined.
}
}
})();
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));