js如何实时监听变量的值发生变化?
网友回复
在 JavaScript 中有几种方法可以监听变量的变化。我列举几种常用的方法:
使用 Vue 的 watch(如果在 Vue 项目中):
new Vue({
data: {
someValue: ''
},
watch: {
// 基础监听
someValue(newVal, oldVal) {
console.log('值变化:', oldVal, '->', newVal);
},
// 深度监听对象
someObject: {
handler(newVal, oldVal) {
console.log('对象变化:', oldVal, '->', newVal);
},
deep: true
},
// 立即执行
someData: {
handler(newVal, oldVal) {
console.log('数据变化:', oldVal, '->', newVal);
},
immediate: true
}
}
});
使用 Object.defineProperty(Vue2 的实现原理):
let value = '';
let oldValue = value;
Object.defineProperty(window, 'watchedValue', {
get() {
return value;
},
set(newValue) {
oldValue = value;
value = newValue;
// 值变化时的回调
onValueChange(value, oldValue);
}
});
function onValueChange(newValue, oldValue) {
console.log('值变化:', oldValue, '->', newValue);
}
// 使用
watchedValue = 'new value'; // 会触发 onValueChange
使用 Proxy(Vue3 的实现原理):
const data = {
value: ''
};
const proxy = new Proxy(data, {
get(target, property) {
return target[property];
},
set(target, property, value) {
const oldValue = target[property];
target[property] = value;
// 值变化时的回调
onValueChange(property, value, oldValue);
return true;
}
});
...点击查看剩余70%
python能写一个检测nginx rewrite高危漏洞的工具代码?
css如何给video视频进行mask遮罩?
windows如何同时允许两个用户远程桌面连接同一个电脑?
nginx升级到1.30.1导致无法启动 [emerg] SSL_CTX_new() failed怎么办?
什么是ASLR(地址随机化)?
有没有不依赖embedding向量的RAG技术?
有没有支持实时打断语音通话并后台帮你执行任何的ai模型?
开源ai大模型文件格式GGUF、MLX、Safetensors、 ONNX 有什么区别?
出海挣钱支付收款PayPal、Wise 、PingPong、Stripe如何选择?
如何实现类似google的图片隐形水印添加和识别技术?


