ScriptObjectMirror有一个接受Global对象的unwrap方法。问题是,我不知道如何发送全局对象,因为似乎没有一种容易的方法来访问它。这意味着我总是得到镜像,而不是原始对象(从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;
}
}如何传递正确的全局对象?
发布于 2015-12-25 19:21:55
在Nashorn中,您不能从外部上下文中展开ScriptObjectMirror实例。也就是说,如果当前全局对象( JavaScript“全局”对象)与正在展开的对象的全局对象不相同,那么纳什霍恩将不会打开它。似乎也没有一种方法来访问JavaScript对象的当前全局。
有一个ScriptUtils#unwrap不接受全局的,但它也显示了相同的行为。
https://stackoverflow.com/questions/34146215
复制相似问题