Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法读取属性';设置';已定义映射的未定义的_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 无法读取属性';设置';已定义映射的未定义的

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())

我第一次使用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:无法读取HtmlLevel.textElement处未定义的属性“set”

我尝试用
集合
数组
对象
交换
映射
,但是,同样的错误不断出现在我的控制台中


像这样的简单操作怎么会不起作用呢?

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

document.getElementById('addText').addEventListener('click', this.textElement.bind(this));
否则,
引用
textElement
函数中的'addText'元素

尝试
console.log(this)
textElement
中记录(this)
,无论是否使用
。绑定(this)
,您都会了解发生了什么。

请参阅常见问题:在副本中将对象方法用作回调/事件处理程序。