Re: [css-variables] CSSVariablesMap enumeration

On 6/20/13 5:24 AM, Alan Cutter wrote:
> At the moment enumeration over a CSSVariablesMap is only indicated in an
> example.

I believe this example is now buggy and should go.

> It is hard to find a concrete specification that it has this behaviour.

That's because it doesn't.

> Previously enumeration was implied by the presence of a getter interface
> method. Is enumeration inherited as part of the MapClass interface?

No, except that presumably the normal ways of working with maps (var key 
of map.keys(), var item of map.items(), var item of map) should work here.

> for (var i in el.style.var) {
>    // e.style.var[i] is undefined.
> }

Shouldn't happen.  This just won't enumerate

> I'm curious whether the reasoning to accommodate this is to allow
> "monkey patching" of the CSSVariablesMap interface.

No, it's to allow you to have a variable named "toString", say. 
Consider carefully what the old setup would have done with 
e.style.var.toString.

> One can still
> introduce "fake" variables by overriding the existing prototype methods.
> Personally I'm not sure it's worth the effect it is having on the CSSOM API.

Personally, I agree with Tab that things with named getters/setters 
should die a horrible death.  Doubly so when the set of names is 
open-ended as here.  Using an object-as-hashtable was the common way to 
do this until Map was introduced, but the whole reason Map was 
introduced is that the object-as-hashtable approach is busted.

-Boris

Received on Thursday, 20 June 2013 14:28:06 UTC