Re: WindowProxy as the key in ES6 Set/Map/WeakSet/WeakMap

On Wed, Apr 16, 2014 at 6:57 AM, Domenic Denicola <
domenic@domenicdenicola.com> wrote:

> Let’s put it this way; perhaps what Mark’s saying will be clearer.
>
> Given:
>
> ```js
> const m = new Map();
> m.set(windowProxyInstance, "foo");
> ```
>
> (and given that nothing else is added to `m`), then `m.get(x) === "foo"`
> should be true _if and only if_ SameValueZero(x, windowProxyInstance) is
> true (which in this case reduces to `x === windowProxyInstance`).
>
> Window proxies should do nothing to violate this invariant of `Map`s.
>
> With that in mind, is there something special about window proxies that
> would allow them to abide by this invariant but still run into the
> questions and problems stated in this thread?
>

Presumably you would agree that if I wrote:

windowProxyInstance = someOtherObject;

then operator=== questions about windowProxyInstance wouldn't be relevant
for answering questions about how m.get behaves.

One way of phrasing the original question is asking whether navigating a
browsing context keeps the identity of the windowProxyInstance constant or
whether the identity of the windowProxyInstance changes and all fields
containing a reference to the previous windowProxyInstance are updated to
refer to the new windowProxyInstance.

I don't believe there's an experiment you can run today in browsers to
answer that question.  Map would give you a way to answer that question,
which is why we need to decide what the answer ought to be.

Adam

Received on Wednesday, 16 April 2014 14:14:34 UTC