聆听Javascript中的实际变量更改

时间:2017-07-05 19:15:01

标签: javascript variables

我希望不要打扰任何人。我没有足够的声誉点来评论并直接提出这个漂亮的建议:https://stackoverflow.com/a/37403125/8261024

我对这个伟大解决方案的另一个问题是:如果我只想检测真正的变化,该怎么办?我的意思是:如果x.a的值发生变化,我知道。什么,如果x.a的值是42并且在更改之后它也是42,但我只想要实际更改值?我只想知道,如果它改为海豚或鱼或某事。

也许我是盲目的,所以我看不出明显的。

感谢。

1 个答案:

答案 0 :(得分:1)

是的,只需将新值与存储值进行比较:

var obj = (function(){
  let store = undefined;

  return {
   get value() {
     return store;
   },
   set value(v){
    if(v !== store){
      alert("changed");
      store = v;
    }
   },
  };
})();

obj.value = 10;//changed
obj.value = 10;