我有一个 Javascript 对象:
var obj={...};
每当添加/更改新属性时,如何执行函数:
例如:
obj["newItem"]=3;
数组有什么办法吗?(原型中的例外覆盖
push
)有没有办法将不同的对象分配给同一个变量?
例子 :
var obj={...}; obj={...}; //redifine
我有一个 Javascript 对象:
var obj={...};
每当添加/更改新属性时,如何执行函数:
例如:obj["newItem"]=3;
数组有什么办法吗?(原型中的例外覆盖push
)
有没有办法将不同的对象分配给同一个变量?
例子 :
var obj={...};
obj={...}; //redifine
有一个名为Object.observe的提议正是为此目的。它类似于 Firefox 中的Object.watch。
还有为您提供更多灵活性的代理对象。
但是,它们都没有广泛实施——例如,如果您正在开发 Firefox 插件,您可以使用代理。
还请注意,对于您问题的第一点来说,这是正确的,但不是最后一点。基本上,如果你正在做:
var obj = {a: 1};
obj = {b: 1};
你没有“重新定义”一个对象,对象本身没有被触及,你只是将不同的对象分配给同一个变量。如果要监视更改,该变量需要是对象的属性——例如,在浏览器中,任何全局变量都会自动成为全局对象的属性,在这种情况下window
,您可以这样做。