Если вы просто передадите button.click
в addEventListener
, тогда вы просто передадите функцию, и она будет вызываться без контекста this
.
Итак, вы исправите, что привязали функцию кобъект.
Вы можете написать следующее, чтобы привязать функцию щелчка к объекту кнопки как одноразовый:
elem.addEventListener('click, button.click.bind(button));
Или вы можете навсегда привязать функцию щелчка кКнопка объекта, написав следующее в конструкторе:
this.click = this.click.bind(this);
Или вы можете быть экономными с вашим синтаксисом и объединить их вместе, как показано ниже:
this.click = function () {
// ... your code here ...
}.bind(this);
function Button() {
this.clicked = false;
this.click = function () {
console.log(this.secret);
}.bind(this);
}
var button = new Button();
button.secret = 'It works';
var elem = document.getElementById('test');
elem.addEventListener('click', button.click);
<button id="test"> Click Me! </button>