I would like to extend localStorage
by e开发者_运维技巧xecuting some code each time a setting is fetched/stored. I could define a getter/setter for all existing properties of localStorage
, but the problem lies in new settings.
For example, localStorage['somenewsetting'] = 123
creates a new setting. I would like to automatically define a getter/setter for this property so that my addition code is also executed for new settings.
Basically I need Object.watch
, but for all properties. What I found was __noSuchMethod__
, but it is not available on Chrome. Is there any shim available for this method? Or is there another way of watching all properties of an object?
Again, I need to make this work on Chrome.
Nope, at least, not for Chrome. __noSuchMethod__
only works for functions, anyway.
Proxy
support is under discussion for the next version of ECMAScript (Harmony), and even already implemented in SpiderMonkey. Until then, you're out of luck, I'm afraid.
— there was a request to implement __noSuchMethod__
in V8 but it was refused. Requests to implement Proxy haven't been any more successful: 633 was merged as duplicate, and the Chromium team doesn't care much about implementing Proxy support.
Yeah, I want that too. So do many, many other people. Isn't going to happen. Ever. Chrome (V8) follows webkit in terms of its JS API. __noSuchMethod__
is a non-standard event created by Mozilla and has been officially rejected from ECMAScript (JavaScript).
In other words, it will never exist :'(
(or if it does, it will be after much arguing and it won't be any time soon)
精彩评论