我正在RhinoScriptEngine中执行第三方javascript文件。该文件包含对“this”中方法的引用。即this.getField。编写该文件时期望“this”是除js Window对象之外的某个对象。所以现在当我运行脚本时,我收到了这个错误:
无法在对象[object Global]中找到函数getField
使用Java ScriptEngine(Rhino),如何更改“this”所指的对象?谢谢!
通常,我可以调用scriptEngine.eval(script)之类的东西。只要没有对某个全局“this”对象的引用,这就很有用。我想做类似的事情,但我可以定义“这个”是什么。
答案 0 :(得分:1)
我知道这个答案已经过了3年多了,但是如果有人找到了寻找解决方案的方法,那么以下代码对我有用:
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript"); //Your Engine Name
engine.put("this", theObject);
现在引用this
将访问所需的对象。