理解GWT编译器输出

时间:2011-04-08 16:28:28

标签: javascript ajax gwt

我不是JS开发人员,但我试图了解GWT编译器转换为JS的java代码在我们的大型应用程序中找到内存增加的原因。

有些时候,我看到一些变量被赋予“_”,例如

_ = com_google_gwt_event_shared_GwtEvent.prototype = new java_lang_Object;

这些分配在代码中的许多地方。这是什么意思 ?

1 个答案:

答案 0 :(得分:3)

GWT编译器使用JavaScript prototype chains对Java类型层次结构建模。 _符号由编译器和简短的JSNI方法用作全局临时变量。在生成的脚本的顶部范围内,您应该看到类似

的内容
// Define the JS constructor(s) for the type
function com___GwtEvent() {}
// Inherit methods from the supertype by prototype chain
_ = com___GwtEvent.prototype = new java_lang_Object;
// Attach polymorphically-dispatched methods to the new type
_.someInstanceMethod = function(a,b,c){.....}
// Static-dispatch methods
function $someOtherMethod(this$static, d, e) {...}

如果您看到具有this$static参数的方法,则编译器推断Java表达式instance.someOtherMethod()不是多态的(可能通过类型收紧)并避免中间符号查找的开销运行时。