我需要创建一个存储另一个对象的对象。大对象的每个属性都有两个属性“值”和“回调”。
let bigObj = {
first: {
value: true,
callback: () => {}
},
second: {
value: false,
callback: () => {}
}, {...}
}
我希望能够通过使用 bigObj.first / bigObj.first = "false" 和回调来获取和更改 value 属性。通过经典方法:bigObj.first.callback = () => {}。
每次更改属性“值”时,我都想调用它的回调函数。
这就是我所做的
var proxy = new Proxy({
first: {
value: true,
callback: () => {}
}
}, {
get(target, key) {
return key in target ? target[key].value : null;
},
set(target, key, value) {
target[key] ? target[key].value = value : target[key] = {value, callback: () => {}};
key !== 'callback' && target[key].callback();
return true;
}
});
问题是我无法更改回调属性。
proxy.first.callback = () => console.log('new cb'); // won't do anything.
您对我如何更改代码以使其正常工作有任何想法吗?
谢谢你。