我有一个对象用作哈希表来存储javascript中的键值对:
Storage["key"] = "value".
我发现我们可以使用defineSetter为每个键设置setter,但是,我们需要事先知道所有的键名。有没有办法在每次设置值时做某事?
例如,在做的时候:
Storage["key"] = "value";
我希望它由自定义方法处理,如:
customMethod : function(aKey, aValue) {
//do something with these two params
// inform somebody else about this.
}
思考/建议?
答案 0 :(得分:0)
不,目前没有办法捕捉所有财产分配。 Firefox 4引入了一个实验JavaScript Proxy API,允许你这样做(让一个代理转发所有对内部对象的调用,但在设置属性时也会触发一些额外的操作),但这可能是一个过度杀手 - 即使这个API很稳定,并在其他浏览器中实现。
答案 1 :(得分:0)
您可以覆盖对象的__defineSetter__
以获得更好的控制。警告:不适用于所有浏览器!
有关详情,请参阅此帖子:John Resig: JavaScript Getters and Setters