如何从 Jint 的全局范围获取所有变量(和函数名称)?
How to get all variables (and functions names) from the global scope in Jint?
我正在使用 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 包含两个值,即一个名为 "globalFunc" 类型的变量 "Function" 和一个名为 "globalVar" 类型的变量"Number".
预期的答案可能会导致一些 Jint 黑客攻击。我也对此持开放态度。
谢谢!
变量和函数可在 engine.Global.Properties 中访问。但是它也持有 'system variables'.
通过将执行脚本后的字典条目与执行脚本之前的条目进行比较,您可以获得有关添加了哪些变量和函数的信息。
我正在使用 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 包含两个值,即一个名为 "globalFunc" 类型的变量 "Function" 和一个名为 "globalVar" 类型的变量"Number".
预期的答案可能会导致一些 Jint 黑客攻击。我也对此持开放态度。
谢谢!
变量和函数可在 engine.Global.Properties 中访问。但是它也持有 'system variables'.
通过将执行脚本后的字典条目与执行脚本之前的条目进行比较,您可以获得有关添加了哪些变量和函数的信息。