我第一次使用ES6,我读了一些关于地图的东西。据我所知,这应该完全符合ES6的可能性:
export class Elements {
constructor() {
this.elements = new Map();
this.attachListeners();
}
textElement () {
this.elements.set((elements.length + 1), new TextElement());
}
attachListeners () {
document.getElementById('addText').addEventListener('click', this.textElement);
}
}
但是,当我单击addText
元素时,我在控制台中获得以下内容
Uncaught TypeError: Cannot read property 'set' of undefined at HTMLDivElement.textElement
我尝试使用Map
,Set
和Array
交换Object
,但同样的错误仍然存在于我的控制台中。
这样的简单操作无法正常工作?
答案 0 :(得分:1)
您需要绑定您的侦听器,如下所示:
document.getElementById('addText').addEventListener('click', this.textElement.bind(this));
否则,this
会引用textElement
函数中的'addText'元素。
console.log(this)
textElement
使用.bind(this)
和LinkedList.removeLast()
,然后了解发生了什么。