Hallo,
irgendwie hast du da etwas grundsätzlich missverstanden über Konstruktorfunktionen, Prototypen und Instanzen.
Was du machst (zumindest der Code, den du gezeigt hast), hat nichts mit »Klassen«, aber auch nichts mit prototypischer Vererbung bzw. Konstruktoren/Instanzen zu tun. Du definierst ein einzelnes Objekt und rufst dann dessen Methoden auf. Dazu brauchst du kein Prototyp, das geht auch mit einem stinknormalen Objekt-Literal. Am besten liest du dir mal diese Artikel durch, um die Unterschiede und die Terminologie zu verstehen:
Organisation von JavaScripten: Voraussetzungen und Überblick
Module und Kapselung, darunter Objekt-Literale
Konstruktoren, Prototypen und Instanzen
Objektverfügbarkeit und this-Kontext
So richtig verstehe ich nun nicht dein Problem und auch nicht, wie Closures es lösen sollen. Du kannst von jeder Stelle problemlos auf das globale Objekt Controller.prototype und dessen Eigenschaften zugreifen. Das ist völlig üblich, wenn man einen Objekt-Literal als Namensraum bzw. »Singleton« verwendet. Das zeigt beispielhaft Felix Riesterers Artikel, dort wird FaderFramework als Objekt-Literal notiert (darin übrigens ein Konstruktor). Eine Funktion und dessen prototype-Eigenschaft ist dazu wie gesagt unnötig, ein einfaches Objekt reicht.
Erst wenn du mit Instanzen arbeitest -- die mit Konstruktoren mittels »new« erzeugt werden und von Prototypen erben bzw. an diese delegieren --, dann ergibt sich das Problem, wie man in Event-Handlern auf die Instanz zugreift. Da gibt es verschiedene Ansätze, die im letztgenannten Text geschildert sin. Und jQuery bringt zudem noch eigene mit: jQuerys bind() sowie deren abgekürzte Varianten wie click() kennen beispielsweise einen Kontext-Parameter (eventData), mit dem man einfach Objekte, in diesem Fall z.B. das Instanzobjekt, ohne Closures in den Event-Handler hineingeben kann. Innerhalb des Handlers kommt man über event.data an das übergebene Objekt.
Grüße,
Mathias