如何检测变量何时更改 JavaScript 中的值?

Dza*_*ija 3 javascript

在开始之前,我想说关于这个话题已经有答案了,我查了一下——但因为我还是个初学者,我真的想不出答案,因为它太对我来说很复杂。所以我想举我自己的例子,一个非常简单的例子,并尝试在此基础上理解。

本质上,我想要做的是当一个已经存在的变量(具有定义的值)更改其值时运行一个函数。像这样的东西:

var testVar = 5;
function letMeKnow() {
console.log("The variable has changed!);
}
Run Code Online (Sandbox Code Playgroud)

我想要的是,当我转到控制台并键入时,例如testVar = 7,我希望该letMeKnow()函数运行,并在控制台中打印出一些内容。更具体地说,我希望 JavaScript 检测到变量已更改,并自动运行该函数。我知道这曾经可以使用Object.observe()or Object.watch(),但由于这些已被弃用,我想我必须使用 getter 和 setter 来实现这一点。我的问题是,对于这个例子,我将如何做到这一点,使其尽可能简单?

谢谢!

pal*_*aѕн 8

一个使用getter/的简单示例setter如下:

var obj = {
  value: '',
  letMeKnow() {
    console.log(`The variable has changed to ${this.testVar}`);
  },
  get testVar() {
    return this.value;
  },
  set testVar(value) {
    this.value = value;
    this.letMeKnow();
  }
}

console.log(obj.testVar)

obj.testVar = 5;
console.log(obj.testVar)

obj.testVar = 15;
console.log(obj.testVar)
Run Code Online (Sandbox Code Playgroud)