2010-07-30 187 views
0

我現在用的是犀牛API調用JavaScript函數:如何知道一個屬性是否是一個數組?

Function fct = context.compileFunction(scope, script, "script", 1, null); 
Scriptable result = (Scriptable) fct.call(
      context, scope, attrs, new Object[0]); 
Object obj = result.get("objectClass", result); 

現在,我怎麼能測試,如果「對象類」屬性的值是一個數組?

回答

1

這可能會給你一些想法:聲明一個函數來確定一個對象是否是一個數組,並調用該函數傳遞你的對象。

engine.eval("function isArray(obj) {" + 
       " return obj.constructor == Array;" + 
       "}"); 
Object obj = engine.eval("[1,2,3,4]"); 
Invocable invocableEngine = (Invocable) engine; 
System.out.println(invocableEngine.invokeFunction("isArray", obj)); //true 
0

可以檢查任何對象是通過做object.getClass().isArray()

+0

我的意思是一個JavaScript數組 – 2010-07-30 09:06:50

+0

但這個問題被標記爲JAVA問題。我的答案也是爲JAVA :( – YoK 2010-07-30 09:08:54

+0

它也被標記爲rhino,這是一個用java編寫的javascript解釋器,但它不是一個JavaScript問題:我想知道如何在Java中執行此操作,而不是在JavaScript中執行此操作(這很明顯) – 2010-07-30 09:22:49

-1
boolean b = object.getClass().isArray(); 
if (b) { 
    // object is an array 
} 

上述方案的陣列檢查Java數組。

如果您正在尋找JAVA代碼中的JavaScript數組,那麼您需要知道JavaScript爲Array返回的對象,並使用instanceof進行檢查。

+1

這將永遠是錯誤的。 JavaScript數組。 – 2010-07-30 09:24:30

相關問題