【问题标题】:Test for functions names in javascript script (SpiderMonkey engine)测试 javascript 脚本中的函数名称(SpiderMonkey 引擎)
【发布时间】:2011-04-28 15:38:40
【问题描述】:

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

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

Tnx, 维蒂卡

【问题讨论】:

    标签: javascript function embed naming spidermonkey


    【解决方案1】:

    据我所知,this 默认指的是全局范围。所以你可以:

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

    【讨论】:

      【解决方案2】:

      在 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));
      

      【讨论】:

        猜你喜欢
        • 2012-03-13
        • 2012-05-15
        • 2014-05-07
        • 2012-02-12
        • 1970-01-01
        • 2017-11-02
        • 1970-01-01
        • 1970-01-01
        • 2014-06-11
        相关资源
        最近更新 更多