Le 15/06/2011 13:34, Tom Van Cutsem a écrit :
2011/6/14 Allen Wirfs-Brock <[email protected]
<mailto:[email protected]>>
Doesn't this new proposal still preclude using proxies to create
an exact emulation of the built-in Array object type. The
"length" property of arrays is specified to be non-configurable
yet special behavior must occur each time the value of length is
changed. The proposal would allow "length" to be "fixed" as an
accessor property whose set behavior did the necessary processing.
However, that is also a violation of the Array specification as
it requires that "length" exhibit the attributes of a data property.
It is true that this strawman would not enable a faithful emulation of
the Array "length" property at the meta-level (i.e. when looking at an
object as a set of property descriptors). I can't yet judge how much
of an issue this is: given the novelty of the property descriptor API,
I don't know how much code such an imperfect Array proxy would break.
At least at the "base-level" (i.e. regular application code), "length"
would be updated as expected, and remains accessible as
"arrayproxy.length".
(As an aside: re. the emulation of arrays, having a configurable
[[Class]] such that |Object.prototype.toString.call(arrayproxy)| can
return "[object Array]" seems like a more important imperfection to fix)
I disagree. People can fix this one by themselves:
https://gist.github.com/1026960 (I haven't tested, but it gives the
idea). Of course this solution is valid as long as observable side
effects of [[Class]] can be redefined.
This is not the case for the .length issue.
Cheers,
David
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss