<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Hello all,</div><div><br></div><div>I have a couple questions about the storage spec (I'm reading the August 10th version at (<a href="http://dev.w3.org/html5/webstorage/">http://dev.w3.org/html5/webstorage/</a>)). </div><div><br></div><div>(1) The spec says:</div><div><div>"<span style="font-family: sans-serif; ">The object's </span><span style="font-family: sans-serif; "><span style="border-bottom-style: solid; border-bottom-color: rgb(153, 153, 204); border-bottom-width: initial; ">indices of the supported indexed properties</span></span><span style="font-family: sans-serif; "> 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 </span><span style="font-family: sans-serif; "><span style="border-bottom-style: solid; border-bottom-color: rgb(153, 153, 204); border-bottom-width: initial; ">supported indexed properties</span></span><span style="font-family: sans-serif; ">."</span></div></div><div><span style="font-family: sans-serif; "><br></span></div><div>As far as I can tell, this seems to say I should be able to say something like:</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>localStorage[3]</div><div>and get something back (not clear if the key or the value).  Am I right in my interpretation of that paragraph?</div><div><br></div><div>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.</div><div><br></div><div><br></div><div><div>(2) The spec also says:</div><div><span style="font-family: sans-serif; ">"The <span style="border-bottom-style: solid; border-bottom-color: rgb(153, 153, 204); border-bottom-width: initial; ">names of the supported named properties</span> on a <code style="font-size: inherit; font-family: monospace; font-variant: normal; color: rgb(255, 69, 0); "><a href="http://dev.w3.org/html5/webstorage/#storage-0" target="_blank" style="color: inherit; background-color: transparent; ">Storage</a></code> object are the keys of each key/value pair currently present in the list associated with the object."</span></div><div>I read that (possibly/probably wrongly) as saying I should be able to say</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>window.localStorage.setItem("foo", "bar");</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>myVariable = window.localStorage["foo"];</div><div><span class="Apple-tab-span" style="white-space:pre">           </span>or</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>myVariable = window.localStorage.foo;</div><div>and now myVariable will have "bar".</div><div> </div><div>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:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>window.localStorage.setItem("length", "a value we compute");</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>window.localStorage.setItem("clear", "something that is transparent");</div><div>which of course allows:</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>window.localStorage["length"];</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>window.localStorage["clear"];</div><div>but in the browsers I've looked at, this (of course) also kinda messes up things like:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>for (index = 0; index < window.localStorage.length; index++) {</div><div><span class="Apple-tab-span" style="white-space:pre">            </span>// whatever</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>window.localStorage.clear();</div><div>since length is now not a number, and clear isn't a function.</div><div><br></div><div>Why is this a desirable feature?</div></div><div><br></div><div>(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)</div><div><br></div><div><br></div><div><div>(3) Real nitpicking here:</div><div>The IDL for the Storage interface says</div><span class="Apple-style-span" style="font-family: sans-serif; "><pre style="margin-left: 2em; white-space: pre-wrap; font-size: inherit; font-family: monospace; font-variant: normal; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: thin; border-right-width: thin; border-bottom-width: thin; border-left-width: thin; border-color: initial; background-color: rgb(238, 238, 238); color: black; padding-top: 0.5em; padding-right: 1em; padding-bottom: 0.5em; padding-left: 1em; position: static; z-index: auto; ">  setter creator void <a href="http://dev.w3.org/html5/webstorage/#dom-storage-setitem" title="dom-Storage-setItem" target="_blank" style="color: inherit; background-color: transparent; ">setItem</a>(in DOMString key, in any data);
</pre></span><div>but the text says</div><div><font face="sans-serif"><div><span style="white-space: pre-wrap; ">   </span>The <dfn title="dom-Storage-setItem" style="font-weight: bold; font-style: normal; "><code style="font-size: inherit; font-family: monospace; font-variant: normal; color: rgb(255, 69, 0); ">setItem(<var title="">key</var>, <var title="">value</var>)</code></dfn> method</div></font></div><div><span style="font-family: sans-serif; "></span></div><div>Note the name of the second parameter is different between these.</div></div><div><br></div><div><br></div><div>Thanks!</div><div><br></div><div>David Burrowes</div><div><br></div></body></html>