2017-03-31 5 views
0

私は初めてES6で作業しており、マップについていくつかのことを読んでいます。私が理解から、これはうまくES6の可能性の範囲内でなければなりません。しかし定義済みマップの未定義のプロパティ 'set'を読み取ることができません

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

私のコンソールで、次の取得私はスワップを試してみましたMapSetArrayObjectですが、私のコンソールには同じエラーが続きました。

このような単純な操作が機能しないのはどうでしょうか?

+0

*共通の問題:オブジェクトメソッドをコールバック/イベントハンドラとして使用する*を参照してください。 –

答えて

1

あなたはこのように、あなたのリスナーをバインドする必要があります。

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

そうでない場合は、thisはあなたのtextElement機能であなたの「addText」要素を指します。

textElementで試してみると、.bind(this)の有無に関係なく、何が起きているのか分かります。

関連する問題