将全局对象传递给 ScriptObjectMirror.unwrap
Passing in a global object to ScriptObjectMirror.unwrap
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;
}
}
如何传入正确的全局对象?
在 Nashorn 中,您无法从外部上下文中解包 ScriptObjectMirror
个实例。也就是说,如果当前全局(JavaScript "global" 对象)与被展开对象的全局不同,Nashorn 将不会展开它。似乎也没有办法访问 JavaScript 对象的当前全局。
有一个 ScriptUtils#unwrap
不接受全局,但它也显示相同的行为。
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;
}
}
如何传入正确的全局对象?
在 Nashorn 中,您无法从外部上下文中解包 ScriptObjectMirror
个实例。也就是说,如果当前全局(JavaScript "global" 对象)与被展开对象的全局不同,Nashorn 将不会展开它。似乎也没有办法访问 JavaScript 对象的当前全局。
有一个 ScriptUtils#unwrap
不接受全局,但它也显示相同的行为。