What's special here is that everything set with the implicit getters/setters is supposed to be turned into a string.  So yes this does seem somewhat unique.<br><br>And yes, "there isn't good interop right now across the board"...but that's one of the reasons the HTML 5 spec + WhatWG exist...right?  :-)<br>
<br>I think it's important to decide which behavior makes the most sense and standardize on it.  The way things are now is pretty useless to eveyone.<br><br>J<br><br><div class="gmail_quote">On Tue, May 26, 2009 at 8:07 PM, Aaron Boodman <span dir="ltr"><<a href="mailto:aa@google.com">aa@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">This isn't a localstorage specific question, this is a general<br>
question about overriding methods on any host object.<br>
<br>
The comments about shooting yourself in the foot are good points, but<br>
the same exact thing is possible on every single API in the entire<br>
environment. It doesn't make sense to worry about them wrt local<br>
storage, specifically.<br>
<br>
FWIW, I think that Safari's behavior is "correct" (a bit weird, but<br>
correct). But this is an area where there isn't good interop right now<br>
across the board.<br>
<font color="#888888"><br>
- a<br>
</font><div><div></div><div class="h5"><br>
On Tue, May 26, 2009 at 7:44 PM, Jeremy Orlow <<a href="mailto:jorlow@google.com">jorlow@google.com</a>> wrote:<br>
> No one else (especially from Mozilla or Microsoft)?  I was hoping to get a<br>
> consensus here (and maybe even things spelled out more clearly in the spec),<br>
> so that all the implementations could be headed in the same direction.  :-)<br>
><br>
><br>
> On Fri, May 22, 2009 at 8:03 PM, Maciej Stachowiak <<a href="mailto:mjs@apple.com">mjs@apple.com</a>> wrote:<br>
>><br>
>> On May 22, 2009, at 5:41 PM, Jeremy Orlow wrote:<br>
>><br>
>>> What is the behavior of the following supposed to be?<br>
>>><br>
>>> window.sessionStorage.removeItem = function(x) { alert("Wait, this<br>
>>> works?"); };<br>
>>> window.sessionStorage.removeItem('blah');<br>
>>> alert(typeof window.sessionStorage.removeItem);<br>
>>><br>
>>> Safari shows 2 alerts, and the second one says 'function'.<br>
>>> IE8 says "object doesn't support this property or method" if line 2 isn't<br>
>>> commented out.  It returns type string when it is.<br>
>>> Mozilla also won't run if line 2 is there, but it returns type object for<br>
>>> line 3.<br>
>>><br>
>>> It seems to me that if IE8's behavior is correct, those parameters should<br>
>>> be marked as read-only since overriding them could only be used to shoot<br>
>>> yourself in the foot.<br>
>>><br>
>>> If Safari's implementation is correct (and it's good for the<br>
>>> implementations to be overridable), then I believe there needs to be some<br>
>>> safe way to make .clear() usable again.  (Otherwise, once you override<br>
>>> removeItem() and clear(), there's not really any way to recover.)  The spec<br>
>>> would also need to make it clear that removeItem, setItem, etc are special<br>
>>> and should not be serialized to disk.<br>
>>><br>
>>> Apologies if this is clear in the spec and I somehow missed it.  But, if<br>
>>> not, I think a clarification might be necessary.<br>
>><br>
>> DOM methods are normally overridable. That would make the Safari behavior<br>
>> correct. If we want the behavior to be different in this case, then the spec<br>
>> should spell that out. Perhaps part of the issue here is that the definition<br>
>> of the [NameSetter] extended attribute in Web IDL doesn't make clear whether<br>
>> or not name setter behavior takes precedence over setting existing<br>
>> predefined attributes or methods.<br>
>><br>
>> Regards,<br>
>> Maciej<br>
>><br>
><br>
><br>
</div></div></blockquote></div><br>