原始问题:
JavaScript 中是否有一个事件,当修改特定变量?请考虑涉及 jQuery 的解决方案。
答案:
使用代理对象:
截至 2018 年,代理对象提供一种监视和拦截对象属性变化的有效机制。它的工作原理是创建一个包装目标对象的代理对象。
var targetObj = {}; var targetProxy = new Proxy(targetObj, { set: function (target, key, value) { console.log(`${key} set to ${value}`); target[key] = value; return true; } }); targetProxy.hello_world = "test"; // console: 'hello_world set to test'
限制:
观察嵌套对象:
为了观察嵌套对象的变化,像 Observable Slim 这样的专业库提供了更全面的解决方案。
var test = {testing:{}}; var p = ObservableSlim.create(test, true, function(changes) { console.log(JSON.stringify(changes)); }); p.testing.blah = 42; // console: [{"type":"add","target":{"blah":42},"property":"blah","newValue":42,"currentPath":"testing.blah",jsonPointer:"/testing/blah","proxy":{"blah":42}}]
以上是如何检测 JavaScript 变量变化?的详细内容。更多信息请关注PHP中文网其他相关文章!