Доступ к функциям и свойствам классов / подклассов из обработчиков событий - PullRequest
1 голос
/ 06 мая 2019

(Это что-то вроде продолжения этого вопроса , но я включил здесь весь необходимый контекст.)

Я пытаюсь создать систему элементов интерфейса 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().Возможно ли это даже с моей установкой, или есть лучший способ переделать весь этот подход?

Спасибо!

...