2013-04-07 51 views
2

我有一个Javascript对象:每当在Javascript中添加对象属性时引发事件?

var obj={...};

  • 我如何可以执行每当增加新的特性功能/改变:

    例如:obj["newItem"]=3;

  • 有任何方式也适用于数组? (excpet覆盖push在原型)

  • 有没有办法做到这一点也分配一个不同的对象到同一个变量?

    例如:

    var obj={...}; 
        obj={...}; //redifine 
    
+2

我不相信有,但我很想被证明是错误的。 – 2013-04-07 10:50:03

+0

是的,你可以参看['Proxy'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Proxy)。 “重新定义对象”是什么意思? – 2013-04-07 10:59:24

+0

也许这个问题有助于解决第一个问题。 http://stackoverflow.com/questions/12325791/javascript-property-accessors – 2013-04-07 10:59:36

回答

0

有名为Object.observe东西,正好意味着用于此目的的建议。这与Firefox中的Object.watch类似。

也有Proxy对象,给你更多的灵活性。

但是,它们都没有广泛实现 - 例如,如果您正在使用Firefox附加组件,则可以使用代理服务器。

还请注意,对于您的问题的第一点是正确的,但不是最后一点。基本上,如果你正在做的:

var obj = {a: 1}; 

obj = {b: 1}; 

你不是“重新定义”的对象,该对象本身不是感动,你只是分配一个不同的对象以相同的变量。如果要监视更改,则该变量需要是对象的属性 - 例如,在浏览器中,任何全局变量都是全局对象的自动属性,在这种情况下window,因此您可以这样做。

相关问题