Rolf B: removeEventListener mit bind

Beitrag lesen

Hallo Theo,

nein. Jeder bind erzeugt eine neue gebundene Funktion.

let a = Func.bind(this);
let b = Func.bind(this);

console.log(a == b);  // false;

Wenn Du einen mit bind erzeugten Eventhandler entfernen willst, musst Du das Ergebnis von Func.bind speichern und beim remove den gespeicherten Wert angeben.

Oder du musst das this anders in die Funktion hineinbugsieren. Closures sind ein sehr mächtiges Werkzeug in JavaScript und können Dir hier helfen. Für das "wie" müsste man mehr über deine Programmstruktur wissen.

Ich habe gerade keine Lust es auszuprobieren. Aber soweit ich mich erinnere, haben Arrowfunktionen ein transparentes this, d.h. sie bekommen beim Aufruf kein eigenes this sondern verwenden das aus dem Kontext, wo sie definiert wurden. Demnach wäre der .bind möglicherweise nicht nötig.

Rolf

--
sumpsi - posui - obstruxi