[英]Window, Document vs. $wnd, $doc
我知道以下是GWT中的某種相同內容:
Window and $wnd
Document and $doc
除了第一個用於Java而第二個用於JSNI(JavaScript)之外,是否有任何差異?
Window
是一個類很多靜態方法,您可以使用它來獲取或設置瀏覽器窗口的某些屬性,但實際上它不是本機瀏覽器窗口對象。 這些方法實現最終是JSNI
塊,它使用$wnd
變量來設置/獲取這些屬性。 像Window.alert()
一樣,它的實現是$wnd.alert()
。 請注意, Window.java
無法訪問瀏覽器窗口對象中的所有內容,如window.console
等。
GWT使用$wnd
而不是window
因為編譯代碼通常在iframe中執行,在此上下文中, window
將引用iframe窗口,而$wnd
將引用父窗口。 $doc
,它是iframe到父文檔的引用。
另一方面Document
是一個擴展JavaScriptObject
的java類,它意味着它是一個Overlay類型,它基本上意味着它是一個原生javascript對象的特殊包裝器,它不修改底層JavaScript但添加了一組java方法與它互動。 傳遞給jsni時可以安全地施放。
總之,盡管Document
和$doc
在java世界中並不相同,但在編譯時它們將是相同的,否則Window
不是$wnd
的疊加,它只是一種訪問瀏覽器窗口的某些方法的方法。
雖然GWT編譯代碼委托給本機js對象和方法,但不要試圖找到js和java對象之間的相似之處。 GWT設計了一個API來使用一組java對象,小部件,模式等來開發ajax應用程序。一些對象和方法以相同的方式命名,但幾乎API都不同。 但是,其他項目將java編譯為javascript,它們在ST-JS和GWT這兩個世界之間具有嚴格的並行性,提供了一個名為Elemental的實驗庫,其API幾乎與javascript相同(它僅適用於Chrome)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.