gpt4 book ai didi

javascript - 观察现有对象的对象属性变化

转载 作者:行者123 更新时间:2023-12-02 23:27:28 25 4
gpt4 key购买 nike

以前可以调用 Object.observe() 任何对象上,然后在修改属性时接收回调。然而,它已被弃用,我们得到了 Proxiesgetters and setters作为替代方案。但两者都不允许将监听器附加到现有对象,对该对象的引用已存储在其他地方。以这段代码为例:

const state = {};

/* BEGIN Third party code */
(function runProcessing() {
setInterval(globalState => {
if (Math.random() > 0.5) {
globalState.attr = !globalState.attr;
}
}, 1000, state);
})();
/* END Third party code */

// TODO: run some function every time state.attr is changed

有两个迫在眉睫的问题:

  • state被声明为 const ,所以不能使用Proxy重新定义
  • state通过引用内部函数传递,因此即使 state被重新定义,函数将继续使用原始对象

虽然这可以使用 setInterval 来实现不断比较 state.attr对于其自身的先前版本,它将无法捕获 setInterval 之间发生的更改。调用,它总是有滞后。

是否有任何鲜为人知的方法可以实现这一目标?

最佳答案

使用Object.defineProperties分别。 Object.defineProperty在现有对象上创建 getter 和 setter。

关于javascript - 观察现有对象的对象属性变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56674256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com