基于this question。 我正在从RequireJS转到browserify(和babelify一起),并尝试将我当前的模块重写为类。对于我的每个RequireJS模块,我都有一个名为eventHandler
的方法,它处理所有通用模块特定事件。现在,当我扩展一个类时,父类会调用子类的方法,这会导致调用该方法两次。事件处理与子类
但是,我的当前代码还有另一个问题。我还有几个模块上的两个方法来绑定和解除绑定事件。我正在使用的网站是一个响应式网站,它跨所有设备大小共享相同的JS。在某些屏幕尺寸(断点)上,我想绑定一些特定的事件,而在另一些屏幕上我不能(或者甚至在从另一个断点来时解除绑定)。 因此,一个典型的模块看起来或多或少是这样的:
'use strict';
let specificEventsBound = false;
class Tooltip {
constructor() {
this.eventHandler();
}
eventHandler() {
// bind general events across all breakpoints
}
bindSpecificEvents() {
// bind breakpoint specific events
specificEventsBound = true;
}
unbindSpecificEvents() {
// unbind breakpoint specific events
specificEventsBound = false;
}
checkBreakpoint() {
if(someBreakpoint) {
this.bindSpecificEvents();
} else {
this.unbindSpecificEvents();
}
}
}
module.exports = Tooltip;
当我现在扩展此类和实现一个checkBreakpoint
与子类不同someBreakpoint
,在bindSpecificEvents
和unbindSpecificEvents
仍然会被调用时超方法被调用。我想我必须改变我现在处理事件的方式......你能告诉我如何正确处理这个问题吗?也许是一个单独的类,仅用于注册和分离方法的事件处理?
你是什么意思*“当我知道扩展这个类并在子类中实现一个带有不同someBreakpoint的checkBreakpoint时,bindSpecificEvents和unbindSpecificEvents在调用super方法时仍然会被调用。在'Tooltip'中,对'this.checkBreakpoint'的调用将调用实例上的实际'checkBreakpoint',该实例将由实例化的类(例如子类)定义。 –