У меня есть собственный класс, который я расширяю для различных целей, и следующий код работает просто отлично:
class Inator {
constructor(whichCanvas) {
this.myCanvas = whichCanvas;
}
}
class Ballgowninator extends Inator {
constructor(whichCanvas) {
super(whichCanvas);
this.myCanvas.addEventListener("mousedown",this.handleMouseDown);
this.myCanvas.addEventListener("mouseup",this.handleMouseUp);
}
handleMouseDown(e) {
alert("ballgowninator mousedown");
}
handleMouseUp(e) {
alert("ballgowninator mouseup");
}
}
class Yodelinator extends Inator {
constructor(whichCanvas) {
super(whichCanvas);
this.myCanvas.addEventListener("mousedown",this.handleMouseDown);
this.myCanvas.addEventListener("mouseup",this.handleMouseUp);
}
handleMouseDown(e) {
alert("yodelinator mousedown");
}
handleMouseUp(e) {
alert("yodelinator mouseup");
}
}
(Mousedown и mouseup - это только два примера; я хочу иметь возможность обрабатывать другие события мыши и даже события клавиатуры).
Есть ли способ переместить часть этого дублированного кода в суперкласс Inator
? Я предполагаю, что в классе superList нет никакого способа ссылаться на функцию в дочернем классе.
РЕДАКТИРОВАТЬ: я должен, что, хотя обработчики событий очень похожи в этом примере, на практике события могут быть обработаны совсем по-другому, или даже проигнорированы.
Спасибо!