Christian S.: JavaScript und this

Beitrag lesen

Hi,

ich hätte mal eine Frage zu JavaScript und this.

Ich habe eine "Klasse", die meinetwegen so aussieht:

var MyClass = function()
{
};

MyClass.prototype =
{
   methode1: function()
   {
      this.methode2();
   },

methode2: function()
   {
   }
};

var obj = new MyClass();
obj.methode1();

das geht ja noch soweit.

Jetzt möchte ich aber methode1 als event handler für ein eigenes event nutzen.

Dazu übergebe ich die methode, also obj.methode1 an eine Funktion, die meine Events handelt, und rufe sie darin auf:

raiseMyEvent: function(handler)
{
   handler(); // handler ist z.B. obj.methode1
}

Problem ist nun, dass this in methode1 nicht mehr auf obj zeigt, sondern irgendwo anders hin.

Kriegt man diese Problem gelöst?

Ähnliches ist, wenn ich schreibe:

var test = obj.methode1;
test();

dann ist this auch anders. Letzteres Problem kriegt man ja noch mit apply in den Griff: var test = obj.methode1.apply(obj);

aber das ist ja irgendwie blöd, und für erstes problem auch nicht mehr machbar.

Gruß!