Hallo,
bindAsEventListener() erwartet als Parameter ein Objekt, in dessen Kontext die Funktion ausgeführt werden soll. Daher ist lediglich das Schema this.func.bindAsEventListener(this) sinnvoll.
bindAsEventListener() erfüllt nur einen Zweck: Den Handler im Kontext eines bestimmten Objektes ausführen. Man kann auf diese Weise *nicht* Objekte an den Handler durchreichen. Die Handler-Funktion bekommt als Parameter immer nur das Event-Objekt.
Wie übergebe ich 'this.value' aus Foo an die Funktion bar?
Gar nicht.
Idealerweise ist bar eine Methode von Foo und value eine Eigenschaft der Instanz.
Dann macht man:
function Foo (n) {
// Private Methode
function bar () {
// Zugriff auf die Instanz über this und darüber auf die benötigte Eigenschaft
alert(this.value);
// (Oder auch einfach alert(n), weil bar hier als Closure wirkt. Pfiffig!)
}
// Initialisiere
this.value = n;
var button = document.createElement("button");
document.body.appendChild(button);
button.appendChild(document.createTextNode("Click me!"));
button.onclick = this.bar.bindAsEventListener(this);
}
window.onload = function() {
var foo = new Foo(42);
}
Andernfalls siehe etwa https://forum.selfhtml.org/?t=138533&m=900197.
Mathias