molily: Eventhandling und Parameter

Beitrag lesen

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

--
»No nations, no borders.«
SELFHTML Weblog