Just FYI, we were planning to drop the $wnd and isNative last time we discussed about it..
On Wed, Oct 29, 2014 at 10:01 AM, confile <[email protected]> wrote: > Thank you Ray. This is a good explanation. It should be added to the docs. > > Best > Michael > > Am Mittwoch, 29. Oktober 2014 16:44:42 UTC+1 schrieb Ray Cromwell: >> >> Whether you use $wnd.SomeJsObject or SomeJsObject depends on the >> following: >> 1) whether you want 'instanceof' to only work on objects that come >> from the host page >> 2) whether or not you're going to extend/subtype JS objects >> >> In most cases, you want "$wnd.SomeJsObject", however there are cases >> where you don't >> >> 1) if you loaded some hand written JS into 'window' instead of $wnd >> 2) if you are referring to inbuilt native JS objects like Window or >> HTMLDivElement >> >> If you do the following >> >> @JsType(prototype="$wnd.Window") >> interface Window { >> ... >> } >> >> Window w = someIframe.window(); >> >> Then w instanceof Window => false. Why? Because the GWT compiler will >> emit "w instanceof $wnd.Window", but your checking for Window objects >> from ANY location. >> >> >> So you see, a prefix of $wnd leads to an ABSOLUTE instanceof operator. >> If you don't specify $wnd, then the instanceof check is relative. So >> for example, it will just check if your constructor is 'Window', no >> matter which context where it came from. >> >> In general, native DOM elements == no $wnd prefix, JS libraries loaded >> in host page == $wnd prefix >> >> >> On Wed, Oct 29, 2014 at 7:04 AM, confile >> <[email protected]> wrote: >> > thank oyu Jens. What about my first question: >> > >> > Is it @JsType(prototype="SomeJsObject") or >> > @JsType(prototype="$wnd.SomeJsObject") ? >> > >> > Best >> > Michael >> > >> > Am Mittwoch, 29. Oktober 2014 14:45:33 UTC+1 schrieb Jens: >> >>> >> >>> Consider an interface >> >>> >> >>> @JsType >> >>> interface Test { >> >>> void do(); >> >>> } >> >>> >> >>> How do I instantiate such an interface? >> >> >> >> >> >> For now you need to use a JSNI factory method. May it be in a static >> inner >> >> class or a dedicated factory class for all your JsTypes. >> >> >> >> With GWT 3.0 (and Java8 support) you can use a static factory method >> on >> >> the interface which uses GWT.jsni() or GWT.js() or whatever name that >> >> special GWT method will have. So in GWT 3.0 it will probably look >> like: >> >> >> >> @JsType >> >> interface Test { >> >> static Test create() { return GWT.js("new Test()"); } >> >> void do(); >> >> } >> >> >> >> >> >> -- J. >> > >> > -- >> > You received this message because you are subscribed to the Google >> Groups >> > "GWT Contributors" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> an >> > email to [email protected]. >> > To view this discussion on the web visit >> > https://groups.google.com/d/msgid/google-web-toolkit- >> contributors/a8612613-de28-4413-926f-ed97086436fa%40googlegroups.com. >> > >> > For more options, visit https://groups.google.com/d/optout. >> > -- > You received this message because you are subscribed to the Google Groups > "GWT Contributors" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/google-web-toolkit-contributors/89359bef-175d-4a96-9362-787fed32888d%40googlegroups.com > <https://groups.google.com/d/msgid/google-web-toolkit-contributors/89359bef-175d-4a96-9362-787fed32888d%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAN%3DyUA0g4PrEkz_mm1D1jHiEDxFqt6gYok%3D%3DwjehREsML2ZNyA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
