每当在Javascript对象上设置新属性时,我怎么能得到一个回调呢?
即我不知道将要设置哪些属性,但是想要对所设置的任何属性进行回调.
我想要的是
var obj = {};
obj.a = "something"; // triggers callback function
function callback(obj,key,val) {
console.log(key + " was set to " + val + " on ", obj);
}
这可能吗?
解决方法:
您可以使用新的defineProperty:
function onChange(propertyName, newValue){
...
}
var o = {};
Object.defineProperty(o, "propertyName", {
get: function() {return pValue; },
set: function(newValue) { onChange("propertyName",newValue); pValue = newValue;}});
但取决于您需要支持的浏览器版本.
编辑:在Jsfiddle上添加了片段,适用于IE10. http://jsfiddle.net/r2wbR/