问题标签 [jint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
114 浏览

javascript - Jint.Parser.JavaScriptParser:区分顶级标识符

我正在尝试使用 .js 检测 JavaScript 代码片段引用的所有全局变量Jint.Parser.JavaScriptParser。我通过遵循此问题中的代码示例来检索令牌列表,然后删除任何已声明函数的名称,如下所示:

这适用于简单的原始变量,但是当引用作为对象的全局变量时,解析器还将这些对象的成员返回为 type Identifier。这是正确的,但我需要区分顶级标识符和其他类型的标识符,但据我所知,没有办法做到这一点。有人有聪明的解决方法吗?

0 投票
0 回答
125 浏览

c# - 如何评估 JSON 文件中的日期时间表达式?

  1. 我有如下的 Json 文件:

    /li>
  2. 想在 c# 中使用 JINT 在 json Key "Rules" 之上运行:

    /li>
  3. 出现错误“未定义日期时间”。如果有人可以帮助我理解是否可以使用 JINT 在 JSON 中使用 DateTime 对象,这将很有帮助

0 投票
1 回答
249 浏览

javascript - Jint(.NET javascript 解析器)总是返回 ExpandoObject

我尝试为游戏编写模组。这对我来说是全新的领域,所以我可能在这里走错了路。游戏是用 Unity 编写的,您可以将 .script 文件添加到您的 mod。.script 文件可以包含由 Jint 解析的 javascript。

我试图从一个游戏 DLL 中输出一个简单的字符串:

在 GameMain.dll 中它说:

我的理解是 GameMain.Game.ModPath 应该给我一个字符串。但是日志文件中的输出是这样的:

无论我尝试输出什么,我都会得到一个 System.Dynamic.ExpandoObject 并且不知道如何处理它。也许有人可以给我提示/资源来帮助。:)

0 投票
1 回答
55 浏览

c# - GetCompletionValue with IIFE trigger errors

I get a exception if I try to use GetCompletionValue with Invoker.
How can i execute the run function with IIFE lexical scope?

Javascript:

My Invoker:

Error:

0 投票
2 回答
355 浏览

c# - 静态类 JINT 中的 C# 非静态类

嗨,试图在静态类中创建一个类以在 JINT 中使用,但是当它被引用时,我得到一个错误

C# 代码

但是当我尝试在 JavaScript 中创建一个新的时,我从 JINT 收到一个错误“对象不能用作构造函数”

我这样做对吗?如何设置 C# 以便能够在 JINT 的 JavaScript 中使用上述代码?

顺便说一句,如果“Ok”不是一个静态类,而是一个命名空间,它可以工作,但我希望它作为一个类,因为我也想在其中包含静态方法

0 投票
1 回答
136 浏览

javascript - Jint:在 Javascript 函数中使用 CLR 对象的属性

我一直在测试 jint 库并遇到了障碍。给定 C# 中的这个类:

而这段代码:

我收到错误:'Jint.Runtime.JavaScriptException:'对象没有方法'startsWith'''

但是,这有效:

那么我可以让前者工作吗?

0 投票
0 回答
130 浏览

javascript - 使用 Jint 从 C# 返回的 Javascript 访问 JSON 数组项

我正在尝试使用 Jint 在 C# 和 Javascript 之间来回通信。基本上一帆风顺,但是我无法在我的 JS 脚本中访问从 C# 返回的数组中的项目。访问返回对象的属性可以正常工作,但访问数组项总是返回 null。

下面是我设置 Jint 引擎并执行我的 Javascript 的 C# 代码。

我正在执行的 Javascript 如下所示:

注意:我意识到我可以从 C# 返回一个字符串,然后从 Javascript 调用 JSON.parse(...),但我试图避免额外的步骤。

很感谢任何形式的帮助。谢谢你。

0 投票
1 回答
200 浏览

javascript - 使用 JInt 解析和评估复杂对象

我需要评估某些表达式,并根据评估选择下一步。我正在尝试为此使用 JInt javscript 解释器。

对于来自 json 的基本评估,它工作正常。但是当我试图在数组上添加额外的操作时,问题就来了。

我的方法,为基础对象设置值 => 编写一个函数来评估表达式 => 调用这个函数并将表达式传递给评估 => 函数将使用 eval 来评估传递的字符串。初始对象已在前面的步骤中设置。

像这样的东西,

在此, inputStart 是我已经使用设置的基础对象

engine.SetValue("inputStart", JsonConvert.DeserializeObject(inputStart));

inputStart 是 json 文本。小提琴也有字符串供参考。最后是函数,

此代码工作正常。现在的变化是,我有另一个包含数组的 json 文本。我正在尝试使用过滤器或查找来定位特定的数组项,然后对其进行一些操作。像这样的东西,

这给了我以下错误,

未处理的异常。System.ArgumentException:使用无效键值访问的 JArray 值:“过滤器”。预期为 Int32 数组索引。

我的完整程序供参考,

这是我正在尝试做的完整小提琴,https://dotnetfiddle.net/GtamM8

如果有人遇到过这样的问题,或者可以提出解决方案,那将非常有帮助。

0 投票
0 回答
559 浏览

javascript - 当应用程序作为 64 位应用程序运行时,JINT 性能明显变差

该应用程序需要 JS 支持(程序是用 C# 编写的)并且 JINT 被用作解释器。我注意到当应用程序作为 64 位应用程序运行时性能会显着降低。

我已将其简化为以下示例,该示例说明了该问题:

当它被编译为 32 位应用程序时,大约需要 11 秒。当它被编译为 64 位应用程序时,大约需要 35 秒。请在实际应用程序中经常抛出异常。

有谁知道为什么会这样?

请注意,这只是在调试器下运行时出现的问题。在调试器之外,性能似乎相似。


更新#1

我一直在研究这个,现在有这个例子:

运行 32 位应用程序时,这比构建为 64 位应用程序时快 20-30%。

即使这样做:

因此,如果没有 .NET 回调,它在 64 位模式下仍然慢 10-20%。

有人知道为什么吗?


更新#2

此示例显示了 32 位和 64 位进程之间的速度差异。我使用 benchmarkdotnet.org 来显示差异。

该脚本已全部注释掉,并且正在执行中。64 位进程大约慢 30%。脚本是否被解析似乎没有什么区别。

有谁知道为什么会这样?

0 投票
1 回答
722 浏览

c# - 将对象传递给jint中的函数并返回一个值

我试图通过jint将对象传递给 javascript 函数并返回一个值。但这似乎不起作用。这是我迄今为止尝试过的 -

错误 -

使用以下代码 -