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
<michael.gorsk...@googlemail.com> 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 google-web-toolkit-contributors+unsubscr...@googlegroups.com.
> 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 google-web-toolkit-contributors+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAPVRV7fuBJCLq7kpyxjDxTqvPQ_ST-h%3DULprM%3D9K0UVO56FsEA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to