所有属性的Object.watch / __noSuchMethod__的垫片是否可用?

时间:2011-06-21 17:35:09

标签: javascript object local-storage getter-setter nosuchmethod

我想通过在每次获取/存储设置时执行一些代码来扩展localStorage。我可以为localStorage的所有现有属性定义一个getter / setter,但问题在于新设置。

例如,localStorage['somenewsetting'] = 123会创建一个新设置。我想自动为这个属性定义一个getter / setter,这样我的加法代码也会为新设置执行。

基本上我需要Object.watch,但是对于所有属性。我发现的是__noSuchMethod__,但Chrome无法使用。这种方法有没有可用垫片?或者是否有另一种观察对象的所有属性的方法?

同样,我需要在Chrome上完成这项工作。

2 个答案:

答案 0 :(得分:2)

是的,我也想要那样。许多人也是如此。不会发生。永远。 Chrome(V8)遵循webkit的JS API。 __noSuchMethod__是由Mozilla创建的非标准事件,已被ECMAScript(JavaScript)正式拒绝。

换句话说,它永远不会存在:'(

(或者如果确实如此,它将经过多次争论,并且不会很快发生)

答案 1 :(得分:2)

不,至少,不是Chrome。无论如何,__noSuchMethod__仅适用于功能。

对于下一版本的ECMAScript(Harmony),甚至under discussion

Proxy支持already implemented in SpiderMonkey。在那之前,你很幸运,我很害怕。

- 有a request to implement __noSuchMethod__ in V8但是被拒绝了。实施代理的请求不再成功:633 was merged as duplicate和Chromium团队doesn't care much about implementing Proxy support