我在 GWT 中尝试通过 JSNI 使用某些对象时遇到了一个奇怪的问题。假设我们有定义函数的 javscript 文件:
测试.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"
? - 如何传递这些对象以便正确识别它们?