我希望不要打扰任何人。我没有足够的声誉点来评论并直接提出这个漂亮的建议:https://stackoverflow.com/a/37403125/8261024。
我对这个伟大解决方案的另一个问题是:如果我只想检测真正的变化,该怎么办?我的意思是:如果x.a的值发生变化,我知道。什么,如果x.a的值是42并且在更改之后它也是42,但我只想要实际更改值?我只想知道,如果它改为海豚或鱼或某事。
也许我是盲目的,所以我看不出明显的。
感谢。
答案 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;