Javascript 无法读取属性';设置';已定义映射的未定义的
我第一次使用ES6,我读了一些关于地图的东西。据我所知,这应该在ES6的可能性之内:Javascript 无法读取属性';设置';已定义映射的未定义的,javascript,ecmascript-6,Javascript,Ecmascript 6,我第一次使用ES6,我读了一些关于地图的东西。据我所知,这应该在ES6的可能性之内: export class Elements { constructor() { this.elements = new Map(); this.attachListeners(); } textElement () { this.elements.set((elements.length + 1), new TextElement())
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:无法读取HtmlLevel.textElement处未定义的属性“set”
我尝试用集合
、数组
和对象
交换映射
,但是,同样的错误不断出现在我的控制台中
像这样的简单操作怎么会不起作用呢?您需要绑定您的侦听器,如下所示:
document.getElementById('addText').addEventListener('click', this.textElement.bind(this));
否则,此
引用textElement
函数中的'addText'元素
尝试console.log(this)
在textElement
中记录(this)
,无论是否使用。绑定(this)
,您都会了解发生了什么。请参阅常见问题:在副本中将对象方法用作回调/事件处理程序。