Вариант первый
Используйте Object.defineProperty, чтобы решить эту проблему. Этот метод, который хорошо известен благодаря Vue2, также является общеизвестным моментом в интервью. Мы можем использовать его, чтобы захватить переменную a и позволить ей увеличиваться, когда это целесообразно. Тогда проблема это можно решить
var value = 1;
Object.defineProperty(window, "a", {
get() {
return this.value++;
}
});
if (a === 1 && a === 2 && a === 3) {
console.log("hello world!");
}
Вышеупомянутое предназначено для захвата a в глобальном окне.Когда a принимает решение, он запускает атрибут get для получения значения, и каждый раз, когда значение получено, будет запускаться функция для выполнения автоинкремента, и если он оценивается три раза, он будет автоматически увеличиваться три раза, поэтому формула, наконец, будет установлена.
Вариант 2
Точно так же мы используем прокси-сервер ES6 для достижения этой цели.
let test = {
number: 1
};
test = new Proxy(test, {
get(target, key) {
return target[key]++;
}
});
if(test.number === 1 && test.number ===2 && test.number ===3){
console.log('333');
}