JS 构造类 如何监控 变量变化 如果为假 输出 123 ,不修改 原始变量
时间: 2024-02-14 20:25:53 浏览: 102
JavaScript用构造函数如何获取变量的类型名
可以通过使用`Proxy`对象来监控变量的变化,并在变量为假时输出123,而不修改原始变量。下面是一个示例:
```javascript
class Monitor {
constructor(variable) {
this.variable = variable;
this.proxy = new Proxy(this.variable, {
set: (target, key, value) => {
if (!value) {
console.log(123);
return true; // 不修改原始变量
}
target[key] = value;
return true;
}
});
}
getProxy() {
return this.proxy;
}
}
const originalVariable = { value: false };
const monitor = new Monitor(originalVariable);
const monitoredVariable = monitor.getProxy();
monitoredVariable.value = true; // 不输出任何内容
monitoredVariable.value = false; // 输出123
console.log(originalVariable); // { value: false }
```
在上述代码中,我们创建了一个`Monitor`类,它接受一个原始变量作为参数,并使用`Proxy`对象来监控该变量的变化。在`set`方法中,我们检查新的值是否为假,如果是,则输出123,并返回`true`告诉代理不修改原始变量。否则,我们将新值赋给原始变量。
通过调用`monitor.getProxy()`方法,我们可以获取到一个代理对象`monitoredVariable`,对该对象的属性进行赋值操作时会触发`set`方法进行监控。在示例中,我们对`monitoredVariable.value`进行了两次赋值,第一次为真,不会输出任何内容;第二次为假,输出123。最后,我们打印原始变量`originalVariable`,可以看到它的值仍然为false,没有被修改。
阅读全文