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