I think Breton mentions something important here; the desire to actually detect if something is an array or arraylike to be able to branch to different code that does completely different things for array[likes] and objects. If we just provide a better generic iteration construct then this part is lost, as I might even not be doing iteration in one of the branches.
Certainly, solving this isn't easy, but it would be good if there was some direction taken by the WG to provide a standard way to detect arraylikeness without having to do iteration, so JS runtimes, browser host objects and JS libraries can follow this precedent. Best regards Mike Wilson Breton Slivka wrote: > On Tue, Dec 8, 2009 at 1:29 PM, Breton Slivka > <z...@zenpsycho.com> wrote: > > The one that I use is > > > > function isArrayLike(i){ > > return (typeof i !=="string") && i.length !== void (0); > > } > > > > It might not be perfect, but it allows me to make certain > assumptions > > about the input that are useful enough. Keep in mind that > an Array may > > have a length of 5, and all those values are undefined, so > {length:4} > > could be used as a valid arrayLike, and that seems reasonable to me. > > > > > > On Tue, Dec 8, 2009 at 1:18 PM, Allen Wirfs-Brock > <allen.wirfs-br...@microsoft.com> wrote: > > Curiously, I don't believe any of the "generic" functions > for arrays and > > array-like objects in section 15.4.4 actually depend upon such an > > "array-like" test. They all simply use ToUint32 applied to > the value of the > > length property. If the length property doesn't exist or > its value isn't > > something that an a convertible representation of a number, > the value 0 is > > used as the length and not much happens. By this > definition, all objects > > are essentially array-like but many have no array-like elements. > > > > > > You've encapsulated here some of the reasoning behind my earlier test- > Anything that passes my test is acceptable to any of the array > prototype functions, but filters out two situations that I've found I > didn't intend an object to be treated as an array. My usecase is > overloaded functions that may also accept objects, and strings, and > arraylikes, but I want a way to distinguish array-likes from objects > and strings. _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss