使用Rhino ScriptEngine,如何更改javascript关键字“this”指的是什么?

时间:2012-04-10 15:27:36

标签: java javascript rhino

我正在RhinoScriptEngine中执行第三方javascript文件。该文件包含对“this”中方法的引用。即this.getField。编写该文件时期望“this”是除js Window对象之外的某个对象。所以现在当我运行脚本时,我收到了这个错误:

无法在对象[object Global]中找到函数getField

使用Java ScriptEngine(Rhino),如何更改“this”所指的对象?谢谢!

通常,我可以调用scriptEngine.eval(script)之类的东西。只要没有对某个全局“this”对象的引用,这就很有用。我想做类似的事情,但我可以定义“这个”是什么。

1 个答案:

答案 0 :(得分:1)

我知道这个答案已经过了3年多了,但是如果有人找到了寻找解决方案的方法,那么以下代码对我有用:

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript"); //Your Engine Name
engine.put("this", theObject);

现在引用this将访问所需的对象。