2016-04-21 64 views
1

我想了解如何區分在Nashorn上運行的腳本內部的javascript對象和java對象。Nashorn:我如何區分javascript對象和java對象?

我最後寫是這樣的:

function isJavaObject(oj) { 
    return oj.getClass && oj.hashCode 
} 

有沒有更好的辦法?

注意,使用的instanceof對java.lang.Object中不起作用

oj = {} 
oj instanceof Java.type("java.lang.Object") // returns true 

回答

6

犀牛有內置對象的「Java」,有很多的(大寫「J」)非ECMA標準好東西,其中包括Java.isJavaObject(obj)函數,如果指定的對象是Java對象而不是腳本對象,則返回true。還有Java.isScriptObject(obj)返回幾乎完全相反,除了null這兩個函數返回false

+0

輝煌,這正是我所追求的。 – Zo72

+0

出於好奇你知道是否有一些文檔是針對內置對象「Java」的嗎?謝謝 – Zo72