2014-02-20 94 views
1

我使用Chrome開發工具來逐步通過我的GWT MVP應用程序,因爲它呈現使用超級開發模式的視圖。調試類成員 - ReferenceError:myPanel未定義

在開發人員工具中,我正在執行通過源映射的java代碼執行我的方法。 我可以突出顯示變量,單擊右鍵,然後選擇「在控制檯中評估」來檢查我的本地作用域變量的狀態。

我想和我的班級成員做同樣的事情。 它使用公共方法。在私有方法中,評估類成員會導致「ReferenceError:未定義」。響應。

我嘗試使用「this.myPanel」註釋我的類成員。迴應是一個簡單的「未定義」。除了「這個」被引用窗口[0]

回答

1

嘗試使用this$static 它的對象容納作爲參數傳遞給函數的情況下,曾經是班成員,但GWT它們編譯成普通的js函數的成員和國家

靜態成員

GWT將轉換靜態函數只是

public class SomeEntry implements EntryPoint { 
    public static String Moo() { 
     String href = Window.Location.getHref(); 
     return href.substring(5, 10); 
    } 
    public static String Moo(String x) { 
     String href = Window.Location.getHref(); 
     return href.substring(5, 10); 
    } 
    public void onModuleLoad() { 
     Window.alert(Moo()); 
     Window.alert(Moo("asd")); 
    } 
} 

將被編譯到函數(不得以任何JS對象):

function Moo(){ 
    var href_0; 
    href_0 = getHref(); 
    return $substring_0(href_0, 5, 10); 
} 

function Moo_0(){ 
    var href_0; 
    href_0 = getHref(); 
    return $substring_0(href_0, 5, 10); 
} 

因此,在編譯時解決的重載將在JS中工作。這具有不需要使用點運算符進行推薦的優點。每個點都是一個新的查找。

+0

感謝您的$靜態。用於從私有方法引用成員。你知道如何訪問靜態類變量嗎? – Stevko

+0

通過不使用「名稱空間」(點運算符)可以將靜態轉換爲無名稱空間(在閉合範圍內)以提高性能。但我無法驗證它。這只是一個猜測。 – tshani