Re: Array-with-item in WebIDL

FWIW, very few of the DOM APIs return array-like objects with a
"contains" function. It's much more common to return an object with a
"item" function. So if we were able to add "item" but not "contains"
that would still enable us to switch most of the APIs in question [*]
to use real JS Arrays.

I'd also love to hear some thoughts about what we want Array.isArray()
to return for one of these objects. And would using a subclass of
Array accomplish that desired behavior?

[*] Sadly NodeList is not one of the APIs in question since NodeList
needs to not be mutable through any Array mutator functions, but can't
use a frozen Array since it changes its contents. Fortunately NodeList
is an exception here.

/ Jonas


On Tue, Jun 16, 2015 at 3:01 PM, Allen Wirfs-Brock
<allen@wirfs-brock.com> wrote:
>
> On Jun 16, 2015, at 2:50 PM, Travis Leithead wrote:
>
> Perhaps this is heretical, but has anyone considered adding "item" and/or
> "contains" to the native Array.prototype object in ES? If this is indeed the
> web-compat blocker for dropping NodeList use in various DOM APIs, I'd like
> to see if anyone could support this.
>
>
> TC39 investigated adding a method named "contains" to Array.prototype be we
> discovered that it cause web breakage:
> https://github.com/tc39/Array.prototype.includes#status . Instead a method
> called "includes" is on track to be added.
>
> "items" is a possibility, but past experience suggests that there is a fair
> chance it would cause problems.
>
> Allen.

Received on Tuesday, 16 June 2015 23:00:35 UTC