怎么在load监听a变化 实时callback let a = 0; class deep{ constructor(){ } load(callback:any){ callback(a)} }
时间: 2024-02-20 12:00:55 浏览: 38
js代码-JS监听数据的变化
在这段代码中,变量 `a` 是一个全局变量,如果你希望在 `a` 发生变化时能够实时触发 `callback` 回调函数,可以考虑使用 JavaScript 中的 `Proxy` 对象来实现。
例如,你可以通过创建一个 `Proxy` 对象来监听 `a` 的变化,每当 `a` 发生变化时,就调用传入的 `callback` 函数,代码如下:
```
let a = 0;
class deep {
constructor() {
this.proxy = new Proxy({ a }, {
set: (obj, prop, value) => {
obj[prop] = value;
if (prop === 'a') {
this.load(this.callback);
}
return true;
}
})
}
load(callback) {
callback(this.proxy.a);
}
}
const obj = new deep();
obj.callback = (value) => {
console.log(`a 的值已经更新为 ${value}`);
}
// 修改 a 的值,触发回调
obj.proxy.a = 1;
obj.proxy.a = 2;
```
在这个例子中,我们创建了一个 `Proxy` 对象来监听对象 `{ a }` 的变化。每当 `a` 发生变化时,我们都会调用 `deep` 类的 `load` 方法,并将传入的 `callback` 函数作为参数传递给它,从而实现了每次 `a` 发生变化时的实时回调。
阅读全文