将全局对象传递给 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 不接受全局,但它也显示相同的行为。