知道何时使用数组表示法将属性设置为对象

时间:2011-07-01 19:10:10

标签: javascript arrays object setter

我有一个对象用作哈希表来存储javascript中的键值对:

Storage["key"] = "value".

我发现我们可以使用defineSetter为每个键设置setter,但是,我们需要事先知道所有的键名。有没有办法在每次设置值时做某事?

例如,在做的时候:

Storage["key"] = "value";

我希望它由自定义方法处理,如:

customMethod : function(aKey, aValue) {
  //do something with these two params
  // inform somebody else about this.
}

思考/建议?

2 个答案:

答案 0 :(得分:0)

不,目前没有办法捕捉所有财产分配。 Firefox 4引入了一个实验JavaScript Proxy API,允许你这样做(让一个代理转发所有对内部对象的调用,但在设置属性时也会触发一些额外的操作),但这可能是一个过度杀手 - 即使这个API很稳定,并在其他浏览器中实现。

答案 1 :(得分:0)

您可以覆盖对象的__defineSetter__以获得更好的控制。警告:不适用于所有浏览器!

有关详情,请参阅此帖子:John Resig: JavaScript Getters and Setters