私は、以下がGWTである種の同じであることを知っています:
Window and $wnd
Document and $doc
最初のものは Java で使用され、2 つ目は JSNI (JavaScript) で使用される以外に違いはありますか?
私は、以下がGWTである種の同じであることを知っています:
Window and $wnd
Document and $doc
最初のものは Java で使用され、2 つ目は JSNI (JavaScript) で使用される以外に違いはありますか?
Window
ブラウザ ウィンドウの特定のプロパティを取得または設定するために使用できる多数の静的メソッドのクラスですが、実際にはネイティブのブラウザ ウィンドウ オブジェクトではありません。これらのメソッドの実装は、最終的に変数をJSNI
使用してこれらのプロパティを設定/取得するブロックになります。誰の実装が になるかのよう$wnd
に。ブラウザの window オブジェクトなどのすべてにアクセスできるわけではないことに注意してください。Window.alert()
$wnd.alert()
Window.java
window.console
コンパイルされたコードが iframe で通常どおり実行されるため、GWT は$wnd
代わりに を使用します。このコンテキストでは、親ウィンドウを参照しながら iframe ウィンドウを参照します。iframe 内の親ドキュメントへの参照でも同じことが起こります。window
window
$wnd
$doc
反対側にDocument
は、拡張する Java クラスがありますJavaScriptObject
。これは、基本的にネイティブ JavaScript オブジェクトの特別なラッパーであることを意味するオーバーレイタイプであることを意味します。基礎となる JavaScript を変更するのではなく、相互作用する Java メソッドのセットを追加します。それと。jsni に渡すときに安全にキャストできます。
要約すると、 Java の世界では と は同じではありませんが、コンパイルすると同じになります。それ以外Document
の場合は のオーバーレイではなく、ブラウザ ウィンドウの特定のメソッドにアクセスする方法にすぎません。$doc
Window
$wnd
GWT でコンパイルされたコードはネイティブの js オブジェクトとメソッドに委任されますが、js と Java オブジェクトの類似点を見つけようとしないでください。GWT は、一連の Java オブジェクト、ウィジェット、パターンなどを使用して ajax アプリケーションを開発するための API を設計しました。一部のオブジェクトとメソッドは同じように名前が付けられていますが、ほとんどの API は異なります。ただし、Java をST-JSのように両方の世界の間に厳密な並列性を持つ javascript にコンパイルする他のプロジェクトがあり、 GWT はAPI が javascript とほぼ同じであるElementalと呼ばれる実験的なライブラリを提供します(Chrome でのみ利用可能です)。