Le 22/05/2013 19:02, Tab Atkins Jr. a écrit :
On Wed, May 22, 2013 at 9:44 AM, Brendan Eich <[email protected]> wrote:
NodeList extends Array now but is not literally Array plus hooks. Same for Map 
and the quite different thing you're specifying.
NodeList is an interesting case, actually.  It's an Array, but with a
type restriction.
I'm a bit lost here. What exactly do you label as "Array"? What is a "type restriction"?

For sure, Array.isArray(anyNodeList) === false
So the ES spec seems to disagree with the statement "a NodeList is an Array"

Live NodeLists even have basically the same linkage
behavior I'm talking about.

What do I need to do to get a Map like that?
Proxy is the answer to your question (FWIW I've made a proxy-based implementation of arrays a while back [1]). But both cases can't really be compared. From a dev perspective, the interface of an array is its own properties (numerical up to 2^32-1, connection with the .length property...) and the interface of a map is the methods/accessors on the prototype ([[MapData]] being "just" a spec tool that could be replaced by anything else as long as prototype methods were behaving observably the same)

If your object can have *any* property name, that can shadow the get/set/has property you need to interact with your map. I'm not sure what the solution is, but a proxy doesn't sound like a good idea at least because of the shadowing issue.

David

[1] https://github.com/DavidBruant/HarmonyProxyLab/blob/master/ProxyArray/ProxyArray.js
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to