无法读取未定义的地图

时间:2017-03-31 16:25:18

标签: javascript ecmascript-6

我第一次使用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

我尝试使用MapSetArray交换Object,但同样的错误仍然存​​在于我的控制台中。

这样的简单操作无法正常工作?

1 个答案:

答案 0 :(得分:1)

您需要绑定您的侦听器,如下所示:

document.getElementById('addText').addEventListener('click', this.textElement.bind(this));

否则,this会引用textElement函数中的'addText'元素。

console.log(this) textElement使用.bind(this)LinkedList.removeLast(),然后了解发生了什么。