Не срабатывает функция при событии

103
02 января 2021, 15:20

возник момент небольшого непонимания в следующей ситуации. По какой-то причине в коде (по ссылке) при передаче именованной функции на обработчик события - она свой код не выполняет. При передаче анонимной функции - всё работает исправно.

Нажатие ЛКМ на документе - именованная функция, ПКМ - анонимная,

class Obj{ 
  constructor() { 
    document.onclick = this.show; 
    this.show = function() { 
      console.log('left'); 
    } 
     
    document.oncontextmenu = () => { 
      console.log('right'); 
      return false; 
    } 
  } 
} 
 
var test = new Obj();

Answer 1

в момент присваивания

document.onclick = this.show;

значение this.show еще не установлено.

Для того, чтобы работало всплытие, нужно использовать определением функции:

function show() {...}

В противном случае идет попытка использовать свойство, значение которому еще присвоено:

class Obj { 
  constructor() { 
    document.onclick = show; 
 
    function show() { 
      console.log('left'); 
    } 
 
    document.oncontextmenu = () => { 
      console.log('right'); 
      return false; 
    } 
  } 
} 
 
var test = new Obj();

READ ALSO
Объясните что делает данный код?

Объясните что делает данный код?

Изучаю создание подсчета количества слов в тексте и не совсем понимаю принцип работы следующего кодаПожалуйста, объясните

99
Как выполнять JS код в зависимости от id?

Как выполнять JS код в зависимости от id?

На одном сайте лежит файл loadjs

122
Возвратить частичное представление в ajax

Возвратить частичное представление в ajax

Не могу получить частичное представление из метода контроллера, в чем может причина

101