关于Nashorn中的ENGINE_SCOPE和GLOBAL_SCOPE绑定有点困惑,试图按照这里的讨论.
在阅读本文之前,我对范围的理解(至少在rhino中)是GLOBAL_SCOPE中有一个共享的Bindings,以及每个引擎的ENGINE_SCOPE中的单个绑定.然而,这个页面似乎在说每个引擎都将基本的javascript构造存储在引擎ENGINE_SCOPE中存在的绑定中(令人困惑地称为"Nashorn全局范围").这听起来像是使GLOBAL_SCOPE绑定无效(因为它们无法访问任何这些基本结构).
我要做的是创建一个上下文,我可以注入一些脚本,然后在这些脚本的上下文中重复评估不同的绑定.但是,如果我可以访问的唯一上下文是单个引擎ENGINE_SCOPE(因为上面的任何内容都无法访问基本的javascript构造),那么似乎任何本地调用都必须添加到那些相同的绑定.有谁知道如何在Nashorn中管理多个级别的绑定?
如果在 ENGINE_SCOPE 中找不到变量,则搜索 GLOBAL_SCOPE 绑定。Nashorn 的全局对象(具有 JS 对象、Number、RegExp、parseInt 等的对象)被包装为 Bindings - 这就是您的 ENGINE_SCOPE。例如。如果将“foo”->“hello”映射条目放入 GLOBAL_SCOPE 中,则该条目将在脚本中可见 - 如果 ENGINE_SCOPE 没有名为“foo”的映射条目。
| 归档时间: |
|
| 查看次数: |
4341 次 |
| 最近记录: |