GWTでJSNIを介していくつかのオブジェクトを使用しようとしたときに、奇妙な問題が発生しました。関数が定義されたjavscriptファイルがあるとしましょう。
test.js:
function test(arg){
var type = typeof(arg);
if (arg instanceof Array)
alert('Array');
if (arg instanceof Object)
alert('Object');
if (arg instanceof String)
alert('String');
}
そして、この関数をユーザーJSNIと呼びたいと思います。
public static native void testx()/ *-{
$wnd.test( new Array(1, 2, 3) );
$wnd.test( [ 1, 2, 3 ] );
$wnd.test( {val:1} );
$wnd.test( new String("Some text") );
}-*/;
質問は次のとおりです。
- なぜ
instanceof
命令は常に返されるのfalse
ですか? - なぜ
typeof
常に戻るの"object"
ですか? - それらが正しく認識されるようにこれらのオブジェクトを渡す方法は?