我使用代理检测对象何时被修改(然后将其保存到磁盘)。这适用于代理对象的简单属性,但对对象属性的修改失败。如何递归捕获对象的所有更改?
var obj = {
p1 = "Hello",
a1 = []
}
var dirtyHandler = {
set: function(obj, prop, value) {
markDirty(obj);
obj[prop] = value;
return true;
}
};
var proxied = new Proxy(obj, dirtyHandler);
proxied.p1 = "World"; // <-- proxy detects modification
proxied.a1.push({'foo': 3}); // <-- proxy does not detect modification
有谁知道如何递归检测任何修改在我对象(a1.push(...),A1 [0]包含.foo = 4,等等)?
http://stackoverflow.com/questions/5100376/how-to-watch-for-array-changes – epascarello
也为数组做一个代理?可能动态获取任意属性? – Bergi