javascript - 如何检测对象值何时更改?

标签 javascript jquery javascript-objects jquery-events

我正在尝试以一种简单易读的方式使用 Javascript 代理对象 来监听对象值的变化。我关注了this Stack Overflow 问题和 Mozilla docs .但我无法理解如何实现我的目标。

var values ={Value1: 0, Value2:0};
var checkObjectChange = new Proxy(values, {});

console.log("The object values are: "+JSON.stringify(values))

$("#btn1").on("click", function() {
    values.Value1 = 1;
    console.log("Now the object values are: "+JSON.stringify(values));
});

$("#btn2").on("click", function() {
    values.Value2 = 1;
    console.log("Now the object values are: "+JSON.stringify(values));
});

//Im expecting to call a function when a object value changes
function whenChange() {
  console.log("The value of the object has changed!");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<button id="btn1">Change value 1</button>
<button id="btn2">Change value 2</button>

最佳答案

您可以将处理函数传递给 Proxy,并且您需要更改代理而不是原始对象上的值

var values ={Value1: 0, Value2:0};

let handler = {
  set: function whenChange(obj,prop,value) {
    obj[prop] = value
  console.log("The value of the object has changed!");
  return true
 }
}
var checkObjectChange = new Proxy(values, handler);

console.log("The object values are: "+JSON.stringify(checkObjectChange))

$("#btn1").on("click", function() {
    checkObjectChange.Value1 = 1;
    console.log("Now the object values are: "+JSON.stringify(checkObjectChange));
});

$("#btn2").on("click", function() {
    checkObjectChange.Value2 = 1;
    console.log("Now the object values are: "+JSON.stringify(checkObjectChange));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<button id="btn1">Change value 1</button>
<button id="btn2">Change value 2</button>

关于javascript - 如何检测对象值何时更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57241269/

相关文章:

javascript - 如何交换表中的两组行

Javascript单例,如何更新这个变量?

javascript - 如何克隆一个元素特定次数

javascript - 在 Adob​​e Acrobat 中使用 Javascript 生成 5 个随机数字

JavaScript 事件 - 页面加载期间还是之前?

javascript - Kendo Treeview onMouseOver()

javascript - 如何填充剩余的div?

javascript - jquery appendTo 元素不遵守 css

JavaScript:将字符串转换为预定义变量的值

javascript - 如何在 javascript 中为 json 对象创建方法?