On Nov 14, 2011, at 3:13 PM, Yehuda Katz wrote:

> 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?

Calm down -- this confrontational style is unjustified.

The spec cannot deal in non-observables. DOM host objects in most 
implementations are full of methods, which really are native function objects. 
But it's always possible to implement a work-alike. So long as a host array 
follows the contract in every observable way, no problem.

What's at issue is the abuse of internal methods defined only for spec-internal 
purposes as arbitrary "plugin APIs" by other specs. That's where negotiation 
and future-proofing are needed.

/be

> 
> 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
> 
> 

Reply via email to