监听属性变化
https://mp.weixin.qq.com/s/r55lQeLqqwkDk89z4oX6oQ
监听一个对象属性的变化
a = "123456"; data = a; Object.defineProperty(window, "a", { get() { console.log("取值a的值: ", data); return data }, set(v) { data = v; console.log("a重新赋值: ", v); return v } }); a = "123";
监听一个对象多个属性的变化
function copyObj(obj) { return JSON.parse(JSON.stringify(obj)) } var params = { "signature": "123456", "sign": "abcd" }; var p1 = copyObj(params); Object.defineProperties(params, { "signature": { get() { console.log("获取了signature值: ", p1.signature); return p1. signature }, set(v) { p1. signature = v; console.log("signature重新赋值: ", v); return v } }, "sign": { get() { console.log("获取了sign值: ", p1.sign); return p1. sign }, set(v) { p1. sign = v; console.log("sign重新赋值: ", v); return v } } }); params.signature = "12345"; params.sign = "qwer";
监听整个对象属性的变化
var params = { "signature": "123456", "sign": "abcd" }; params = new Proxy(params, { get: function(target, key, receiver) { console.log(`获取了key:${key},值:${target[key]}`); return target[key] }, set: function(target, key, value, receiver) { target[key] = value; console.log(`修改了key:${key},新值:${value}`); return true } }); params.signature = "1234"; console.log(params.signature);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义