2011-04-08 82 views
1

我不是JS開發人員,但我想了解由GWT編譯器轉換爲JS的Java代碼在我們的大型應用程序中找到增加內存的原因的方式。瞭解GWT編譯器輸出

一段時間我看到一些變量,assigened爲「_」,例如

_ = com_google_gwt_event_shared_GwtEvent.prototype = new java_lang_Object; 

這些類型的任務是在代碼中的許多地方。這是什麼意思 ?

回答

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()並不多態(可能通過型緊縮)並避免運行時中間符號查找的開銷。