如何监听数组内对象属性变化
要监听数组内对象属性的变化,你可以使用 JavaScript 的 Proxy 对象来创建一个代理,并定义一个名为 set
的陷阱函数。这个陷阱函数会在对象属性被设置时被调用,你可以在这个函数中实现你需要的逻辑。
以下是一个示例代码:
const arr = [{}, {}, {}]; // 假设这是你要监听的数组
const proxyArr = new Proxy(arr, {
set(target, property, value) {
target[property] = value;
console.log(`The value of ${property} has been changed to ${value}`);
return true; // 表示设置成功
}
});
// 修改数组内的对象属性
proxyArr[0].name = 'John'; // 输出:The value of name has been changed to John
在上面的代码中,我们使用 Proxy
对象创建了一个代理 proxyArr
,并将原始数组 arr
作为目标对象传递给 Proxy
的构造函数。然后,我们定义了一个名为 set
的陷阱函数,当 proxyArr
中的对象属性被设置时,这个函数会被调用。在 set
函数中,我们将新值赋给目标对象的属性,并输出一条日志信息。最后,我们返回 true
表示设置成功。
通过这种方式,你可以监听数组内对象属性的变化,并在属性被修改时执行相应的逻辑。
1 回答881 阅读✓ 已解决
1 回答942 阅读
1 回答843 阅读
1 回答800 阅读
1 回答721 阅读
692 阅读
572 阅读
解决措施:
通过@Observed配合@ObjectLink装饰符实现。@Observed用于类,@ObjectLink用于变量。
参考代码