JSNI:JavaScriptObject和Element JSNI函数参数之间的区别?

时间:2014-01-10 16:46:50

标签: java javascript html gwt jsni

使用GWT JSNI JavaScriptObject和Element作为JSNI方法的参数类型有什么区别?

考虑以下方法:

native void method(JavaScriptObject inputFile) /*-{

}-*/;

和这一个:

native void method(Element inputFile) /*-{

}-*/;

如果我使用JavaScriptObject或Element,它对内部JSNI函数有什么不同吗?

1 个答案:

答案 0 :(得分:6)

ElementJavaScriptObject,但反之则不然,并非所有java脚本对象都是dom元素。

从Java的角度来看,这很重要 - 它确保你不传递一些没有意义的东西,比如一个Window实例,或者一些json数据,但只传递真正元素的东西。

从JSNI方法中的JavaScript的角度来看,它没有区别,因为JS不理解这些术语中的类型,并且期望传入的任何对象都有正确的方法和字段。

所有其他条件相同,更清楚 - 在有意义时使用Element,或者至少添加javadoc或将参数命名为clear。如果你指定JSO而不是Element,那么Java,GWT和Javascript都不会关心,但是如果你不小心传入一个非Element并且该方法需要一个元素,你可能会收到一个错误。