2
我有一个Javascript对象:每当在Javascript中添加对象属性时引发事件?
var obj={...};
我如何可以执行每当增加新的特性功能/改变:
例如:
obj["newItem"]=3;
有任何方式也适用于数组? (excpet覆盖
push
在原型)有没有办法做到这一点也分配一个不同的对象到同一个变量?
例如:
var obj={...}; obj={...}; //redifine
我有一个Javascript对象:每当在Javascript中添加对象属性时引发事件?
var obj={...};
我如何可以执行每当增加新的特性功能/改变:
例如:obj["newItem"]=3;
有任何方式也适用于数组? (excpet覆盖push
在原型)
有没有办法做到这一点也分配一个不同的对象到同一个变量?
例如:
var obj={...};
obj={...}; //redifine
有名为Object.observe东西,正好意味着用于此目的的建议。这与Firefox中的Object.watch类似。
也有Proxy对象,给你更多的灵活性。
但是,它们都没有广泛实现 - 例如,如果您正在使用Firefox附加组件,则可以使用代理服务器。
还请注意,对于您的问题的第一点是正确的,但不是最后一点。基本上,如果你正在做的:
var obj = {a: 1};
obj = {b: 1};
你不是“重新定义”的对象,该对象本身不是感动,你只是分配一个不同的对象以相同的变量。如果要监视更改,则该变量需要是对象的属性 - 例如,在浏览器中,任何全局变量都是全局对象的自动属性,在这种情况下window
,因此您可以这样做。
我不相信有,但我很想被证明是错误的。 – 2013-04-07 10:50:03
是的,你可以参看['Proxy'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Proxy)。 “重新定义对象”是什么意思? – 2013-04-07 10:59:24
也许这个问题有助于解决第一个问题。 http://stackoverflow.com/questions/12325791/javascript-property-accessors – 2013-04-07 10:59:36