Ошибка TypeError: this is not a function

Так как this.draw внутри функции указывает на текущий контекст, а как тогда обратиться к внешнему контексту?

class Example {
  constructor() {
    document.addEventListener('mousemove', function() {
      this.draw('mousemove');
    });
  }
  draw(e) {
    console.log(e);
  }
}

let example = new Example;


Ответы (1 шт):

Автор решения: Zhihar

попробуйте такой код:

class Example {
    constructor() {
        document.addEventListener('mousemove', this.mousemove.bind(this), false)
    }
    mousemove(e) {
        this.draw('mousemove');
    };
    draw(e) {
        console.log(e);
    }
}

let example = new Example;

дело в том, что this внутри безымянной функции уже не является указателем на класс

→ Ссылка