javascript - 如何检测数字变量的变化?
问题描述
例如,我想当console.log()
一个变量发生变化。JavaScript 基本上不提供变量的观察者。所以我想知道该怎么做。
对于对象和数组,我可以使用 Proxy,如下所示:
let proxy = new Proxy(arr, {
deleteProperty: function(target, property) {
console.log("Deleted %s", property);
return true;
},
set: function(target, property, value, receiver) {
target[property] = value;
console.log("Set %s to %o", property, value);
return true;
}
});
但我不知道如何处理数字。如何使它们可观察?
解决方案
您无法观察原始值。它们只是价值观。您将需要一个对象/函数包装器。一个简单的技巧是设置并获取相同的键,而不管您指定的键是什么,这实际上将对象性从对象中取出,感觉就像使用原语一样。
const number = new Proxy({ value : 5 }, {
set: (obj, prop, value, receiver) => { console.log('value set'); obj.value = value; return true },
get: (obj, prop) => { console.log('value get'); return obj.value}
})
number.foo = 10
console.log(number.bar)
推荐阅读
- c++ - FFMPEG,C++,内存泄漏,我做错了什么?
- intellij-idea - 在 IntelliJ IDEA 中将 Kotlin 文件标记为类
- c# - 卸载程序
- javascript - 循环内 JavaScript 中的变量
- python - Python Flask WTForms 日期时间验证另一个
- java - 使用 Apache POI 基于 csv 工作表更新 Excel 工作表值
- javascript - 如何让 elevateZoom 处理多个图像
- c# - PrintWindow 出现黑屏
- html - CSS多个不同位置:绝对按钮屏幕分辨率问题
- jquery - jqGrid 在搜索中仅显示“IsNull”和“Is Not Null”选项