wiem, że po to jakaś taka sama w GWT:
Window and $wnd
Document and $doc
Czy są jakieś różnice, poza tym, że pierwszy jest używany w języku Java, a drugi w JSNI (JavaScript)?
wiem, że po to jakaś taka sama w GWT:
Window and $wnd
Document and $doc
Czy są jakieś różnice, poza tym, że pierwszy jest używany w języku Java, a drugi w JSNI (JavaScript)?
Window
to klasa obfitująca w metody statyczne, których można użyć do uzyskania lub ustawienia pewnych właściwości okna przeglądarki, ale w rzeczywistości nie jest to obiekt okna przeglądarki macierzystej. Te implementacje metod są ostatecznie JSNI
blokami, które używają zmiennej $wnd
do ustawiania/otrzymywania tych właściwości. Takich jak Window.alert()
, których implementacja byłaby $wnd.alert()
. Zauważ, że Window.java
nie ma dostępu do wszystkiego w oknie przeglądarki obiektu jak window.console
itp
GWT używa $wnd
zamiast window
ponieważ kod skompilowany jest wykonywany zazwyczaj w iframe, aw tym kontekście window
będzie odwoływać się okno iframe podczas gdy $wnd
odniesie się do okna nadrzędnego. To samo dzieje się z $doc
, która jest odniesieniem w elemencie iframe do dokumentu nadrzędnego.
W drugiej Document
to klasa Java, która rozciąga JavaScriptObject
, oznacza to, że jest to rodzaj Overlay które w zasadzie oznacza, że jest to specjalny wrapper dla rodzimej JavaScript Object, to nie zmienia stanowiącego podstawę JavaScript ale dodaje zestaw metod java do interakcji z nim. Można go bezpiecznie rzucać, przechodząc do jsni.
Podsumowując, chociaż Document
i $doc
nie są takie same w Javie świata, kiedy to opracowano będą takie same, inaczej Window
nie jest to nakładka z $wnd
, to jest po prostu sposobem na dostęp do niektórych metod przeglądarce okno.
Mimo że GWT skompilował delegowania kodu do natywnych obiektów i metod js, nie próbuj znajdować podobieństw między obiektami js i java. GWT zaprojektował API do tworzenia aplikacji ajaxowych przy użyciu zestawu obiektów java, widżetów, wzorców itp. Niektóre obiekty i metody są nazywane w ten sam sposób, ale prawie API jest inny. Istnieją jednak inne projekty, które kompilują java do javascript, który ma sztywną równoległość pomiędzy obydwoma światami, takimi jak ST-JS, a GWT dostarcza eksperymentalną bibliotekę o nazwie Elemental, której API jest prawie identyczne z javascript (jest dostępne tylko w Chrome).