It seems as though the spec intends to disallow host objects (i.e. DOM) from fully acting like an Array, which is clearly the intent here. Perhaps this is a time for "willful disobedience" and a correction in ES6?
Yehuda Katz (ph) 718.877.1325 On Mon, Nov 14, 2011 at 10:46 AM, Rick Waldron <waldron.r...@gmail.com>wrote: > [snip] >> > > >> ES5.1 clause 8.6.2 says: >> > "The value of the [[Class]] internal property of a host >> object may be any String value except one of "Arguments", "Array",..." >> > In other words, host object provides (such as a DOM implementation) are >> not allowed to define new kinds of objects whose [[Class]] is Array. >> > It's fine to want to define a new kind of host object that is >> behaviorally very similar (but slight different) from instances of the >> built-in Array constructor. But characterizing such objects by saying they >> have [[Class]]=="Array" >> > is a not meaningful from a ES5.1 specification perspective. >> >> I'm fine with any formulation, as long as it gives the correct behaviour >> in cases like Array.prototype.concat and Array.isArray. >> > > ES 5.1 15.4.3.2 Array.isArray() > ... > 2. If the value of the [[Class]] internal property of arg is "Array", then > return true. > ... > > Considering Allen's previous comment, this is not going to be allowed. > > Rick > > >> >> Do you have suggestions for what to write? >> >> / Jonas > > >