我正在寻找一种跨浏览器的方法,允许我在每次创建/删除/修改javascript对象的属性时定义回调。这应该允许我这样做:
var myObject = {};
function onSet(propertyName, propertyValue) {
// Do whatever you want here
}
// Attach the 'onSet' function to 'myObject'
// so it will be called everytime we add it a property.
myObject.abc = 'xyz'; // should call "onSet('abc','xyz')"
我在ECMAScript 6文档中看到了一个可以允许我这样做的Proxy对象。它的问题在于它目前仅受最新版本的Firefox和Edge支持。
我虽然可以使用setter / getter来实现它,但似乎只能为属性定义一个(例如,如果x = {y:2};我不知道如何定义一个setter for“ x“,但很容易为”xy“做这件事。可悲的是,这并没有解决我的问题。)
有没有人可以解决这个问题,还是应该让我的代码现在正好等待ECMAScript 6到处支持?