[whatwg] Overriding functions in DOM Storage

On Fri, May 22, 2009 at 5:41 PM, Jeremy Orlow <jorlow at google.com> wrote:

> What is the behavior of the following supposed to be?
>
> window.sessionStorage.removeItem = function(x) { alert("Wait, this
> works?"); };
> window.sessionStorage.removeItem('blah');
> alert(typeof window.sessionStorage.removeItem);
>
> Safari shows 2 alerts, and the second one says 'function'.
> IE8 says "object doesn't support this property or method" if line 2 isn't
> commented out.  It returns type string when it is.
> Mozilla also won't run if line 2 is there, but it returns type object for
> line 3.
>
> It seems to me that if IE8's behavior is correct, those parameters should
> be marked as read-only since overriding them could only be used to shoot
> yourself in the foot.
>
> If Safari's implementation is correct (and it's good for the
> implementations to be overridable), then I believe there needs to be some
> safe way to make .clear() usable again.  (Otherwise, once you override
> removeItem() and clear(), there's not really any way to recover.)
>

Never mind.  "delete window.localStorage.clear;" should handle this use
case.

That said, IE8 doesn't support the delete operator in this fashion and
.clear() does not reset functions in Safari 4 (beta).


> The spec would also need to make it clear that removeItem, setItem, etc are
> special and should not be serialized to disk.
>
> Apologies if this is clear in the spec and I somehow missed it.  But, if
> not, I think a clarification might be necessary.
>
> J
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/attachments/20090522/b1b0c49a/attachment.htm>

Received on Friday, 22 May 2009 17:51:29 UTC