如何在Jint中从全局范围中获取所有变量(和函数名)

How to get all variables (and functions names) from the global scope in Jint?

本文关键字:变量 函数 获取 Jint 范围 全局      更新时间:2023-09-26

我正在使用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();

则期望变量包含两个值,即"Function"类型的名为"globalFunc"的变量和"Number"类型的名称为"globalVar"的变量。

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

谢谢!

在引擎中可以访问变量和函数。Global.Properties。但是,它也包含"系统变量"。

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