(Это что-то вроде продолжения этого вопроса , но я включил здесь весь необходимый контекст.)
Я пытаюсь создать систему элементов интерфейса HTML, котораяЯ буду использовать много общего кода, и у меня возникнут проблемы с обработчиками событий и областью видимости.Этот код работает:
class Inator {
constructor(whichCanvas, eventRegistry) {
this.myCanvas = whichCanvas;
this.foo = 10;
for (var e in eventRegistry) {
this.myCanvas.addEventListener(e,eventRegistry[e]);
}
}
double(val) {
return val*2;
}
}
class Ballgowninator extends Inator {
constructor(whichCanvas) {
super(
whichCanvas, {
mousedown: (e) => {
alert("mousedown");
},
mouseup: (e) => {
alert("mouseup");
}
}
);
this.bar = 20;
}
triple(val) {
return val*3;
}
}
var c = new Ballgowninator(document.querySelector(".ballgown"));
.inator {
background-color: white;
border: solid 1px black;
width: 90vw;
}
<canvas class="ballgown inator"></canvas>
( Тот же код , что и JSFiddle, если вы предпочитаете)
Однако я бы хотелчтобы иметь доступ к double()
, triple()
, foo
и bar
из обработчиков событий, которые я передаю super()
.Возможно ли это даже с моей установкой, или есть лучший способ переделать весь этот подход?
Спасибо!