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%
webgl与webgpu有啥不同?
Zero Trust的Tunnels怎么设置泛域名解析及http服务获取当前访问域名?
Spec Coding(规范驱动编码)和 Vibe Coding(氛围编程)有啥区别?
如何在国内服务器上正常运行未备案的域名网站?
Cloudflared 和WARP Connector有啥不同?
有没有让本地开源大模型越狱的方法或插件啥的?
如何使用Zero Trust的Tunnels技术将局域网电脑web服务可以公网访问呢?
编程领域ai大模型的排名是怎么样的?
如何修改别人发给我的微信笔记内容?
fbx、obj、glb三维格式模型如何在浏览器中通过three相互转换格式?


