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

时间:2017-12-19 12:49:12

标签: javascript

在开始之前,我想说已经有关于这个主题的问题已经回答了,我查了一下 - 但是因为我还是一个初学者,我无法找到答案因为它对我来说太复杂了。所以我想给出我自己的例子,一个简单的例子,并尝试基于此理解。

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

使用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)