Отследить изменение переменной
Возможно ли как-то отследить изменение переменной. Скажем, при изменении переменной выводить её новое значение в консоль.
Ответы (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);
}