Setter JavaScript 中的任何内容
Setter for anything in JavaScript
我有一个对象,我们称它为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 有办法做到这一点吗?谢谢
您可以创建一个 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
我有一个对象,我们称它为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 有办法做到这一点吗?谢谢
您可以创建一个 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