gpt4 book ai didi

javascript - 监听 JavaScript 中的变量变化

转载 作者:IT老高 更新时间:2023-10-28 11:02:09 24 4
gpt4 key购买 nike

当某个变量的值发生变化时,是否有可能在 JS 中触发一个事件?接受 JQuery。

最佳答案

这个问题最初是在 2009 年发布的,现有的大多数答案要么已经过时、无效,要么需要包含大型臃肿的库:

自 2018 年起,您现在可以使用 Proxy object 来监视(并拦截)对对象所做的更改。它是专为 OP 试图做的事情而设计的。这是一个基本示例:

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'

Proxy 对象的唯一缺点是:

  1. Proxy 对象在旧版浏览器(例如 IE11)和 polyfill 中不可用。无法完全复制 代理 功能。
  2. 代理对象与特殊对象(例如,Date)的行为并不总是如预期一样——Proxy 对象最好与普通对象或数组配对。

如果您需要观察对嵌套对象所做的更改,则需要使用专门的库,例如 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 - 监听 JavaScript 中的变量变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1759987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com