1
我不是JS開發人員,但我想了解由GWT編譯器轉換爲JS的Java代碼在我們的大型應用程序中找到增加內存的原因的方式。瞭解GWT編譯器輸出
一段時間我看到一些變量,assigened爲「_」,例如
_ = com_google_gwt_event_shared_GwtEvent.prototype = new java_lang_Object;
這些類型的任務是在代碼中的許多地方。這是什麼意思 ?
我不是JS開發人員,但我想了解由GWT編譯器轉換爲JS的Java代碼在我們的大型應用程序中找到增加內存的原因的方式。瞭解GWT編譯器輸出
一段時間我看到一些變量,assigened爲「_」,例如
_ = com_google_gwt_event_shared_GwtEvent.prototype = new java_lang_Object;
這些類型的任務是在代碼中的許多地方。這是什麼意思 ?
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()
並不多態(可能通過型緊縮)並避免運行時中間符號查找的開銷。