方法一:我们使用ES6的Proxy代理来实现。
let result= {
number: 1
};
result= new Proxy(test, {
get(target, key) {
return target[key]++;
}
});
if(result.number === 1 && result.number ===2 && result.number ===3){
console.log('istrue oh no');
}
方法二使用Object.defineProperty来解决,我们可以使用它来劫持a变量,当获取它的值得时候让它自增
var result2= 1;
Object.defineProperty(window, "a", {
get() {
return this.result2++;
}
});
if (a === 1 && a === 2 && a === 3) {
console.log("istrue");
}
劫持全局window上面的a,当a每一次做判断的时候都会触发get属性获取值
并且每一次获取值都会触发一次函数实行一次自增,判断三次就自增三次,最后会让公式成立。