On Wed, Nov 23, 2011 at 1:17 PM, David Herman <dher...@mozilla.com> wrote:

> On Nov 18, 2011, at 2:00 AM, Peter van der Zee wrote:
>
> > On Thu, Nov 17, 2011 at 10:02 PM, Brendan Eich <bren...@mozilla.com>
> wrote:
> >> On Nov 17, 2011, at 11:26 AM, Dean Landolt wrote:
> >>
> >>> Who can resist such a juicy bikeshed...
> >
> > Please keep the general js api consistent.
>
> A foolish consistency...
>
> We also use 'hasOwnProperty' and 'forEach' and 'toLocaleString' in JS. Why
> not use those names? Because it's not the same operation. Neither is it the
> same thing as .length. An array is a sequential data structure, so it uses
> .length. A map and a set is not a sequential data structure, so it should
> not.
>


As a thought experiment imagine someone were to propose
Object.prototype.length -- what exactly would you expect that to mean? How
would this be any different than Map.prototype.length? It'd be just as
nonsensical. I could see `keyLength` being here, and something like
`itemLength` being logical for sets, but these two concepts really are the
same. It could also be said that a set's `itemLength` is the same concept
as an array's.

This merits a new property, delegating the length property where it makes
sense (sequences). IMHO the `count` property captures this intension
nicely. Something like this, perhaps:

Object.prototype.count => total keys
Map.prototype.count => total keys
Set.prototype.count => total items
Array.prototype.length => length
Array.prototype.count => Array.prototype.length (sans holes?)
String.prototype.length => length
String.prototype.count => String.prototype.length
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to