我正在尝试找出如何在Nashorn上运行的脚本中区分javascript对象和java对象。
我最后写了这样的东西:
function isJavaObject(oj) {
return oj.getClass && oj.hashCode
}
有更好的方法吗?
请注意,对java.lang.Object使用instanceof不起作用
oj = {}
oj instanceof Java.type("java.lang.Object") // returns true
答案 0 :(得分:6)
Nashorn有一个非ECMA标准的内置对象" Java" (大写" J")有很多好东西,其中有Java.isJavaObject(obj)
函数,如果指定的对象是Java对象而不是脚本对象,则返回true。还有Java.isScriptObject(obj)
几乎完全相反,除了null
,两个函数都返回false
。