我有一个对象,我们称之为obj
,它看起来像这样:
const obj = {
key: "value"
}
现在,我想在设置属性时执行某些操作。我听说过二传手 我可以通过以下方式使用:
const obj = {
set key(e) {
console.log("Property key has been set!")
}
}
但是我想对任何属性执行此操作...就像不仅仅用于键,它适用于任何事物,例如:
obj.SomeKey = "value"
应该登录"Property key has been set!"
对于任何财产来说都是一样的...
JavaScript中有没有办法做到这一点?谢谢
答案 0 :(得分:1)
您可以创建一个ES6 Proxy
,它允许您像这样修改set
方法:
const obj = {
key: "value"
};
const objProxy = new Proxy(obj, {
set: (obj, prop, v) => {
obj[prop] = v;
console.log("do something");
}
});
objProxy.name = "foo";
console.log(objProxy); // Proxy now has name attribute
console.log(obj); // And so does the original object