Struppi: window[] statt eval in Namensräumen?

Beitrag lesen

Jetzt bin ich völlig durcheinander … also es ist so, wie Struppi schon vermutet hat. Ich verwende ein Objekt. Mit this bin ich tatsächlich nicht sehr weit gekommen, da ich mit Event-Handlern arbeite und es dadurch zu Fehlern kam. Jetzt verzichten ich auf this und schreibe stattdessen meinSkript.Methode = function() {}. So funktioniert alles. Ist das trotzdem noch nicht richtig?

Vermutlich nicht (du bist sehr zurückhaltend mit Codebeispielen)

Der Punkt bei eventhandler ist, dass im Eventaufruf, this dem Objekt, auf dem der event stattfindet, entpricht. Zu Verdeutlichung:

function deinObjekt(id) {  
var element = document.getElementById(id);  
element.onclick= function(e) {  
// hier ist this == element  
};  
}

um das zu umgehen, verwendet man ein lokale Variabel, die dann im eventaufruf ihre Gültigkeit behält.

function deinObjekt(id) {  
var self = this;  
var element = document.getElementById(id);  
element.onclick= function(e) {  
// hier kannst du dann über self auf die Funktionen des Objektes zugreifen  
};  
}

Struppi.