W3C home > Mailing lists > Public > whatwg@whatwg.org > August 2010

[whatwg] A couple questions about the Web Storage spec

From: David John Burrowes <bainong@davidjohnburrowes.com>
Date: Thu, 12 Aug 2010 20:20:44 -0700
Message-ID: <F445FBEF-EE1B-4CE9-AD70-AAAF13FDEBE7@davidjohnburrowes.com>
Hello all,

I have a couple questions about the storage spec (I'm reading the August 10th version at (http://dev.w3.org/html5/webstorage/)). 

(1) The spec says:
"The object's indices of the supported indexed properties are the numbers in the range zero to one less than the number of key/value pairs currently present in the list associated with the object. If the list is empty, then there are no supported indexed properties."

As far as I can tell, this seems to say I should be able to say something like:
	localStorage[3]
and get something back (not clear if the key or the value).  Am I right in my interpretation of that paragraph?

I saw some discussion earlier about whether something like localStorage[3] was meaningful, but I didn't find the resolution.  And none of the browsers I've tried this with do this (unless, of course, there has already been a setItem('3', someValue) done earlier).  So, I'm just confused, and probably misunderstanding "indices of the supported indexed properties".  Thanks for any clarification.


(2) The spec also says:
"The names of the supported named properties on a Storage object are the keys of each key/value pair currently present in the list associated with the object."
I read that (possibly/probably wrongly) as saying I should be able to say
	window.localStorage.setItem("foo", "bar");
	myVariable = window.localStorage["foo"];
		or
	myVariable = window.localStorage.foo;
and now myVariable will have "bar".
 
If my reading is right (and it is the behavior I see in a couple browsers) this seems a bit dangerous, because I can do something like:
	window.localStorage.setItem("length", "a value we compute");
	window.localStorage.setItem("clear", "something that is transparent");
which of course allows:
	window.localStorage["length"];
	window.localStorage["clear"];
but in the browsers I've looked at, this (of course) also kinda messes up things like:
	for (index = 0; index < window.localStorage.length; index++) {
		// whatever
	}
	window.localStorage.clear();
since length is now not a number, and clear isn't a function.

Why is this a desirable feature?

(I originally posted these questions to another list.  Jeremy Orlow mentioned this had been discussed elsewhere, but I haven't managed to locate the discussion. Happy to be pointed at it)


(3) Real nitpicking here:
The IDL for the Storage interface says
  setter creator void setItem(in DOMString key, in any data);
but the text says
	The setItem(key, value) method
Note the name of the second parameter is different between these.


Thanks!

David Burrowes

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/attachments/20100812/159f8515/attachment.htm>
Received on Thursday, 12 August 2010 20:20:44 UTC

This archive was generated by hypermail 2.4.0 : Wednesday, 22 January 2020 16:59:26 UTC