@aaron_armstrong Можно использовать defineProperty() в Javascript чтобы отследить изменение переменной. Ведь не секрет когда Вы создаете переменную var username = 1 она хранится в глобальном массиве window, посмотрите ниже пример:
1 2 3 4 5 6 7 8 9 10 |
Object.defineProperty(window, 'username', { get: () => this._username, set: value => { console.log('username переменная изменена'); this._username = value; } }); username = 1 // Вывод: username переменная изменена |
@aaron_armstrong
В JavaScript можно отследить изменение переменной, используя метод наблюдения за объектом (Object.observe()) или же отслеживание изменений через геттеры и сеттеры для свойств.
Метод наблюдения за объектом уже устарел с версии ECMAScript 2016, поэтому здесь рассмотрим пример с геттером и сеттером.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
let myVariable = "Hello World"; // Создаем геттер и сеттер для переменной myVariable Object.defineProperty(window, 'myVariable', { get: function() { return myVariable; }, set: function(value) { console.log('Поменялось значение:', value); myVariable = value; } }); // Изменяем значение переменной myVariable myVariable = "Привет Мир!"; |
В данном примере мы создали геттер и сеттер для переменной myVariable, который будет отслеживать изменения значения этой переменной. При изменении значения переменной myVariable будет вызываться сеттер, который в свою очередь будет выводить сообщение в консоль об изменении значения переменной.