Javascript创建事件方法

时间:2017-09-21 20:55:04

标签: javascript events event-handling

我有帮助类,并希望定义在更改某些值时触发的事件方法。

例如简化:

class HelperClass {
  activeIndex = 0;

  constructor(element) {}

  ...some computation methods...
}

我需要在从外部更改activeIndex时触发事件。像addEventListener这样的东西。当内部值发生变化时,可以从clas之外听取。 例如:

const obj = new HelperClass(element);
obj.onActiveIndexChange((event, activeIndex) => ...something...)

or

obj.on('activeIndexChange', (event, activeIndex) => ....something.... )

我不想使用外部库。首选具有原生特征的香草代码。

感谢。

更新:简单的解决方案

class HelperClass {
  activeIndex = 0;

  addEventListener(eventName, func) {
    this[
      `on${eventName.substr(0, 1).toUpperCase()}${eventName.substr(1)}`
    ] = func;
  }

  onActiveIndexChange(activeIndex) {}
}

this.onActiveIndexChange(newValue)在更改值后调用

然后在外面定义:

objInstance.addEventListener('activeIndexChange', (activeIndex) =>
  ...myCustomCodePassed in callback...
);

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您可以为对象属性定义一个setter:

https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/defineProperty

每次更改值时都会触发一个函数。

这是一个普通的JavaScript。