Hallo,
Für alle Methoden den Kontext zu erzwingen, würde wieder andere Probleme mit sich bringen.
Ich finde ja intuitiv, dass "this" doch bei Javascript eine durchgängige Logik hat. Warum soll "this" denn nicht der Button sein, wenn sein onclick = meineFunktion; ist? Ich häng den button ja nicht nicht an mein Objekt sondern hänge eine Funktion/Objekt an den Button. So ist setTimeout/Intervall ja auch eine Funktion, die an dieses _window_(!).Event gehangen wird. Also auch logisch, das "this" dann das Objekt meint, an das die Funktion gehangen wurde.
Ich dachte jetzt, das "this"-"Problem" sei gelöst, wenn ich allen Buttons zB. eine einzige onclick-Funktion zuweise, die zB. (das ist jetzt unschön aber fürs paradigamtische ja vielleicht doch sinnvoll) das this.innerHTML als Anhaltspunkt nimmt, die entsprechende Funktion (m)eines ActionObjektes aufzurufen. Diese Routing-Funktion kann ja auch den eventfeuernden Button als Parameter mit übergeben, wenn das sinnvoll erscheint.
Sinngemäß:
(function () {
var myActionController, myRouter;
myActionController = {
someButtonName : function (button) {
/*globals alert*/
alert(button.innerHTML);
}
};
myRouter = function () {
// this ist der button der geklickt wurde
var action = this.innerHTML;
if (myActionController.hasOwnProperty(action)) {
myActionController.action(this);
}
};
document.getElementsByTagName("button").onclick = myRouter;
}());
Weiß nicht, ob das einem der Pattern entspricht, die Du in einem Deiner Artikel beschrieben hast. Die las ich grad weiter quer bzw. durch und wollte das noch fortsetzen.
Gruß
jobo