Как отследить изменение переменной в javascript?

Пользователь

от aaron_armstrong , в категории: JavaScript , 3 года назад

Как отследить изменение переменной в javascript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от adela , 3 года назад

@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 переменная изменена


Пользователь

от abel , 2 года назад

@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 будет вызываться сеттер, который в свою очередь будет выводить сообщение в консоль об изменении значения переменной.