【问题标题】:How to get all variables (and functions names) from the global scope in Jint?如何从 Jint 的全局范围中获取所有变量(和函数名称)?
【发布时间】:2015-02-06 14:12:22
【问题描述】:

我正在使用 Jint,我想知道是否有办法从 C# 角度获取脚本全局范围内可用的所有已定义变量和函数。

例如,给定文件“test.js”中的以下Javascript代码:

function globalFunc(a, b) {
    var localVar = a + b;
    return localVar;
}

var globalVar = 5;

... 并给出以下 C# 代码(使用 Jint 2.4.0):

Jint.Engine engine = new Jint.Engine();
engine.Execute(System.IO.File.ReadAllText("test.js");

// the following method call do not exist in Jint, just here for example...
JsValue[] variables = engine.GetGlobalScopeVariables();

然后期望 variables 包含两个值,即“Function”类型的名为“globalFunc”的变量和“Number”类型的名为“globalVar”的变量。

预期的答案可能会导致一些 Jint 黑客攻击。我也对此持开放态度。

谢谢!

【问题讨论】:

    标签: javascript c# jint


    【解决方案1】:

    变量和函数可在engine.Global.Properties 中访问。然而,它也包含“系统变量”。

    通过将执行脚本后字典中的条目与执行之前的条目进行比较,您可以获得有关添加了哪些变量和函数的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-29
      • 1970-01-01
      • 2015-11-24
      • 2012-04-29
      • 2013-07-13
      相关资源
      最近更新 更多