2013-04-07 79 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,因此您可以這樣做。

相關問題