如果我这样做,在 javascript 控制台中,
a = [1,2,3]
Object.prototype.toString.call(a) // gives me "[object Array]"
typeof a // gives me "object"
如果我在 GWT 中创建一个数组列表并将其传递给本机方法并执行此操作,
// JAVA code
a = new ArrayList<Integer>();
a.push(1);
a.push(2);
//JSNI code
Object.prototype.toString.call(a) // gives me "[object GWTJavaObject]"
typeof a // returns "function"
两者之间究竟有什么区别?GWTJavaObject与Array完全相似吗?
为什么在纯 javascript 中typeof
返回“对象”而在 GWT 中返回“函数”?
总结的问题是,在 Javascript 中转换成的 GWT 对象到底是什么?完整代码在这里。
public void onModuleLoad()
{
List<Integer> list = new ArrayList<Integer>();
list.add( new Integer( 100 ) );
list.add( new Integer( 200 ) );
list.add( new Integer( 300 ) );
Window.alert(nativeMethodCode( list ));
Window.alert(nativeMethodCode2( list ));
}
public static final native Object nativeMethodCode( Object item )
/*-{
return Object.prototype.toString.call(item);
}-*/;
public static final native Object nativeMethodCode2( Object item )
/*-{
return typeof item;
}-*/;