Nashorn:如何区分 javascript 对象和 java 对象?
Nashorn: how do I distinguish between a javascript object and a java object?
我正在尝试找出如何在 Nashorn 上的脚本 运行 中区分 java 脚本对象和 java 对象。
我最后写了这样的东西:
function isJavaObject(oj) {
return oj.getClass && oj.hashCode
}
有没有更好的方法?
请注意,针对 java.lang.Object 使用 instanceof 无效
oj = {}
oj instanceof Java.type("java.lang.Object") // returns true
Nashorn 有一个非 ECMA 标准的内置对象 "Java"(大写 "J"),它有很多优点,其中 Java.isJavaObject(obj)
函数 return 如果指定的对象是 Java 对象而不是脚本对象,则为真。还有 Java.isScriptObject(obj)
和 return 几乎完全相反,除了 null
这两个功能 return false
.
我正在尝试找出如何在 Nashorn 上的脚本 运行 中区分 java 脚本对象和 java 对象。
我最后写了这样的东西:
function isJavaObject(oj) {
return oj.getClass && oj.hashCode
}
有没有更好的方法?
请注意,针对 java.lang.Object 使用 instanceof 无效
oj = {}
oj instanceof Java.type("java.lang.Object") // returns true
Nashorn 有一个非 ECMA 标准的内置对象 "Java"(大写 "J"),它有很多优点,其中 Java.isJavaObject(obj)
函数 return 如果指定的对象是 Java 对象而不是脚本对象,则为真。还有 Java.isScriptObject(obj)
和 return 几乎完全相反,除了 null
这两个功能 return false
.