ScriptObjectMirror
有一个unwrap
方法,它接受Global
个对象。问题是我无法弄清楚如何发送全局对象,因为它似乎不是一种简单的方法来访问它。这意味着我总是得到镜像而不是原始对象(来自ScriptObjectMirror.class
的反编译代码):
public static Object unwrap(Object obj, Object homeGlobal) {
if(obj instanceof ScriptObjectMirror) {
ScriptObjectMirror mirror = (ScriptObjectMirror) obj;
return mirror.global == homeGlobal ? mirror.sobj : obj;
} else {
return obj instanceof JSONListAdapter?((JSONListAdapter)obj).unwrap(homeGlobal):obj;
}
}
如何传入正确的全局对象?
答案 0 :(得分:2)
在Nashorn中,您无法从外部环境中解包ScriptObjectMirror
个实例。也就是说,如果当前全局(JavaScript“全局”对象)与要解包的对象的全局不同,Nashorn将不会解包它。似乎也没有办法访问JavaScript对象的当前全局。
有一个ScriptUtils#unwrap
没有接受全局,但它也显示相同的行为。