我得到了带有一些代码的 webpack 包:
class View extends EventEmitter {
constructor() {
super();
this.input = document.getElementById('input');
this.btn = document.getElementById('button');
this.list = document.getElementById('list');
}
addListeners() {
this.btn.addEventListener('click',this.emit('some', this.inputValue));
}
// some other stuff
}
//--------got error : Uncaught TypeError: Cannot read property 'addEventListener' of undefined
但是当我在做:
addListeners() {
// document.getElementById('button') instead of this.btn everything is good
document.getElementById('button').addEventListener('click',this.emit('some', this.inputValue));
}
我认为问题出在上下文中。在您的 addListeners 方法中,放入
console.log(this);
查看此函数内部的上下文。它可能指向的不是您所期望的。
此外,要添加事件侦听器,您可以这样做:
this.btn.addEventListener('click',this.emit);
使用您当前的代码执行一次函数,您不需要添加事件侦听器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句