Nashorn:我如何区分javascript对象和java对象?

时间:2016-04-21 12:47:00

标签: nashorn

我正在尝试找出如何在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 

1 个答案:

答案 0 :(得分:6)

Nashorn有一个非ECMA标准的内置对象" Java" (大写" J")有很多好东西,其中有Java.isJavaObject(obj)函数,如果指定的对象是Java对象而不是脚本对象,则返回true。还有Java.isScriptObject(obj)几乎完全相反,除了null,两个函数都返回false