- From: Jonas Sicking <jonas@sicking.cc>
- Date: Tue, 16 Jun 2015 15:59:37 -0700
- To: Allen Wirfs-Brock <allen@wirfs-brock.com>
- Cc: Travis Leithead <travis.leithead@microsoft.com>, Joshua Bell <jsbell@google.com>, "Tab Atkins Jr." <jackalmage@gmail.com>, "public-script-coord@w3.org" <public-script-coord@w3.org>
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