krdpsr
@krdpsr
loading...

Как создать событие?

допустим есть объект в котором изменяется свойство х

надо запускать некоторую функцию соответствующее некоторому значению
например если х=5 то запускаем функция_обработчик_5

var объект = {
  x : 0
  изменить_x : function( значение )
  { объект.x = значение; 
  if( значение===5 ){ функция_обработчик_5() } 
  }
}

функция_обработчик_5 = function(){ alert() }


как это сделать красивее и удобнее?

надо чтобы можно было указать несколько значений и соответствующие им фунции

примерно так:

объект.добавить_обработчик( 5, функция_обработчик_5 )
  • Вопрос задан
  • 181 просмотр
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Свойства - геттеры и сеттеры

В простом варианте, сразу обрабатывать все условия:
const obj = {
  _x: 0,
  get x() {
    return this._x;
  },
  set x(value) {
    this._x = value;
    if (this._x === 5) {
      console.log('Пятёрочка!');
    }
  },
};

// использование
obj.x = 5; // Пятёрочка!


С добавлением фильтров можно поступить так:
const obj = {
  _x: 0,
  _filters: {},
  addFilter(value, callback) {
    this._filters[value] = callback;
  },
  get x() {
    return this._x;
  },
  set x(value) {
    this._x = value;
    this._filters[value]?.(value);
  },
};

// добавить обработчики
obj.addFilter(5, () => console.log('Пятёрочка!'));
obj.addFilter(10, v => console.log(`${v} это десять!`));

// использование
obj.x = 10; // 10 это десять!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы