これを行うと、javascriptコンソールで、
a = [1,2,3]
Object.prototype.toString.call(a) // gives me "[object Array]"
typeof a // gives me "object"
GWT で arraylist を作成し、それをネイティブ メソッドに渡してこれを行うと、
// 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では「オブジェクト」を返すのに、GWTでは「関数typeof
」を返すのはなぜですか?
要約の質問は、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;
}-*/;