Отследить изменение переменной

Возможно ли как-то отследить изменение переменной. Скажем, при изменении переменной выводить её новое значение в консоль.


Ответы (2 шт):

Автор решения: Alexander Lonberg

Для глобальной области window так:

function defineProperty(propertyName, defaultValue) {
  Object.defineProperty(window, propertyName, {
    get() {
      return defaultValue
    },
    set(v) {
      console.log(`Установили новое значение ${v}`)
      defaultValue = v
    }
  })
}

defineProperty('box', 123)

box = 456

void function(){
  box = 789
}()

Для обычных классов - стандартные геттеры и сеттеры.

→ Ссылка
Автор решения: Alex

На Angular получилось так:

.html:

<input type="text" #myInput>

<button (click)=func(myInput.value)>Go!</button>

.ts:

  array:string[] = [];

  func(str:string){

    this.array.push(str); // записываем в массив значения

    this.array.length > 2 ? this.array.shift() : 0; 
// Если в массиве больше 2 элементов, то нулевой удаляется и всегда остается 2 элемента - текущий и предыдущий 

    this.array.length < 2 ? 0 :(
      this.array[1] == this.array[0] ? console.log('Equals!'): console.log('Not equals!')) 
// Если в массиве меньше 2 элементов, то ничего, если 2 - то сравниваем и делаем то что нужно

// console.log(this.array);
    
  }
→ Ссылка