- From: Ian Hickson <ian@hixie.ch>
- Date: Thu, 30 Apr 2009 00:07:14 +0000 (UTC)
- To: John J Barton <johnjbarton@johnjbarton.com>
- Cc: public-webapps@w3.org
On Wed, 29 Apr 2009, John J Barton wrote:
>
> So why call the property |length|? Wouldn't an enumerable JS host object
> be just as fabulous with getNumberOfItems()?
All the other host objects use |length|.
> But the part that has me confused is maybe just me being dumb. I just
> have a hard time with:
>
> sessionStorage[2] = "foo"; // set the key |2| to value "foo".
>
> then
>
> var x = sessionStorage[2]; // null? "foo"?
> var y = sessionStorage[0]; // "2"
>
> I'm thinking: why do I have to think so hard about this? It should be
> just an associative array.
You only have to think hard about this if you use numeric keys and use the
implied accessors. Just use .setItem("2") and .getItem("2"), or use a
non-numeric key, and then there's no confusion.
> Firebug shows objects from Firefox to developers. The appropriate
> display format for objects depends on the character of the objects and
> the needs of developers. For example, arrays are shown in square
> brackets with the first few entries, ["foo", "bar", ...]. HTML Elements
> are shown with their nodeName and id if any. In this way developers can
> quickly get an idea of the nature of the object, and perhaps drill down
> for more information.
>
> How many display formats should be created? One for every kind of object
> is simply impractical. Even if time allowed to create formats for all
> the built-in types, all the DOM types, all the library types (prototype,
> jquery, dojo,...) etc, there would still be user types. So you have to
> create categories of representations that cover the important cases.
> Firebug has about thirty.
>
> Now given an object, how do we assign it to one of these thirty
> representations? The only possibility is to examine the properties of
> the object.
That's no the only possibility by a long shot. In fact it's not even a
particularly good option; I would recommend using "instanceof" and the
like instead.
> Of course there are objects that are not arrays and yet have length, eg
> Strings.
There are lots of objects that are not arrays (or should not be rendered
as arrays) and yet have length. Collections, TimeRanges, <select>
elements, Window objects, History, CanvasPixelArrays, etc.
--
Ian Hickson U+1047E )\._.,--....,'``. fL
http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Thursday, 30 April 2009 00:07:53 UTC