2011-04-08 4 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 메소드에 의해 전역 임시 변수로 사용됩니다. 생성 된 스크립트의 정상 범위에서, 당신은

당신이 this$static 매개 변수가 방법을 참조
// 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) {...} 

같은 것을 볼 수, 컴파일러는 (아마도 형 체결을 통해) Java 표현식 instance.someOtherMethod() 다형성 아니라고 추론했다 런타임시 중간 심볼 룩업의 오버 헤드를 피할 수 있습니다.