gpt4 book ai didi

Nashorn 和脚本绑定(bind)范围

转载 作者:行者123 更新时间:2023-12-02 09:59:27 24 4
gpt4 key购买 nike

对 Nashorn 中的 ENGINE_SCOPE 和 GLOBAL_SCOPE 绑定(bind)有些困惑,试图遵循讨论 here

在阅读本文之前,我对范围的理解(至少在 rhino 中)是,对于每个单独的引擎,GLOBAL_SCOPE 中有一个共享的绑定(bind),而 ENGINE_SCOPE 中有单独的绑定(bind)。然而,这个页面似乎在说每个单独的引擎都将基本的 javascript 结构存储在引擎 ENGINE_SCOPE 中存在的绑定(bind)中(令人困惑地称为“Nashorn Global Scope”)。这听起来像是使 GLOBAL_SCOPE 绑定(bind)实际上变得毫无用处(因为它们无法访问任何这些基本构造)。

我想做的是创建一个可以注入(inject)一些脚本的上下文,然后在这些脚本的上下文中重复评估不同的绑定(bind)。但是,如果我可以访问的唯一上下文是各个引擎 ENGINE_SCOPE (因为上面的任何内容都无法访问基本的 javascript 构造),那么似乎任何本地调用都必须添加到这些相同的绑定(bind)中。有谁知道如何在 Nashorn 中管理多个级别的绑定(bind)?

最佳答案

如果在 ENGINE_SCOPE 中找不到变量,则搜索 GLOBAL_SCOPE 绑定(bind)。 Nashorn 的全局对象(具有 JS 对象、Number、RegExp、parseInt 等的对象)被包装为 Bindings - 这就是您的 ENGINE_SCOPE。例如。如果将“foo”->“hello” map 条目放入 GLOBAL_SCOPE 中,则该条目将在脚本中可见 - 如果 ENGINE_SCOPE 没有名为“foo”的 map 条目。

关于Nashorn 和脚本绑定(bind)范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23959700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com