Hallo,
Hier noch ein Beispiel:
function foo(buttons)
{
this.buttons = new Object();
this verweist, sofern du foo tatsächlich einfach mit foo(...) aufrufst, auf das globale Objekt window.
Mit dieser Zuweisung überschreibst du die globale Variable buttons. Aber du hast den Array ja noch als Parameter an die Funktion übergeben, deshalb funktioniert der Zugriff auf buttons (ohne this).
Da solltest du mal Klarheit schaffen.
Event.observe(this.buttons.Zoomin, 'click', this.btnZoomin_Click.bindAsEventListener(this)); // Event wird nicht behandelt :(
Dein Beispiel funktioniert problemlos bei meinen Tests.
this ist in dieser Zeile gleich window. Du machst also das:
Event.observe(window.buttons.Zoomin, 'click', window.btnZoomin_Click.bindAsEventListener(window));
Es ist sinnlos, bindAsEventListener mit dem Parameter window aufzurufen. bindAsEventListener ist gerade dazu da, damit this in der Handler-Funktion *nicht* auf window zeigt. Sinnvoll wäre .bindAsEventListener(window.buttons.Zoomin). Bzw. verstehe ich nicht ganz, warum du window.buttons überschreibst, anstatt einfach eine lokale Variable zu erzeugen.
Mathias