Rhino-如何仅从javascript端在全局上下文/范围中求值(无Java端访问)

Rhino-如何仅从javascript端在全局上下文/范围中求值(无Java端访问),javascript,rhino,Javascript,Rhino,我正在使用一个第三方应用程序,该应用程序具有Mozilla Rhino提供的嵌入式JS脚本环境 因此,不幸的是,这意味着我无法访问Java源代码,也无法访问此产品中配置/嵌入Rhino的方法 记住这一点,我的目标是在全局上下文/范围中执行任意数量的其他编码的JS,使用JS并且仅使用JS。这里是我要注意的地方,这个例子有点做作,但请注意: var engine = new Packages.javax.script.ScriptEngineManager().getEngineByName("ja

我正在使用一个第三方应用程序,该应用程序具有Mozilla Rhino提供的嵌入式JS脚本环境

因此,不幸的是,这意味着我无法访问Java源代码,也无法访问此产品中配置/嵌入Rhino的方法

记住这一点,我的目标是在全局上下文/范围中执行任意数量的其他编码的JS,使用JS并且仅使用JS。这里是我要注意的地方,这个例子有点做作,但请注意:

var engine = new Packages.javax.script.ScriptEngineManager().getEngineByName("javascript");
engine = Packages.javax.script.Invocable(engine);
这就是我要说的。所以,我知道我可以做到:

engine.eval("var myVar = \"Hello World!\";");
engine.get("myVar");
=> "Hello World!"
engine.eval("var myVar = \"Hello World!\";");
myVar
=> "Hello World!"
但我想要的是,eval以某种方式在当前全局上下文/范围内执行了编码字符串。也就是说,我可以这样做:

engine.eval("var myVar = \"Hello World!\";");
engine.get("myVar");
=> "Hello World!"
engine.eval("var myVar = \"Hello World!\";");
myVar
=> "Hello World!"
期望行为的另一个例子:

engine.eval("function sayHello(){ return \"Hello Again!\";}var a = \"Apple\";");
sayHello();
=> "Hello Again!"
a
=> "Apple"
我注意到有一些重载的eval方法可能很有用:

class java.lang.Object eval(java.lang.String,javax.script.Bindings)
class java.lang.Object eval(java.lang.String,javax.script.ScriptContext)
然而,我的扩展实验尚未取得任何成功

非常感谢您的任何想法和想法