开发者

Is there Object.watch for all properties / a shim for __noSuchMethod__ available?

开发者 https://www.devze.com 2023-03-14 16:38 出处:网络
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 pro

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)

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号