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