2010-07-30 81 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

相关问题