Wird das Festlegen von Eigenschaften für das Window-Objekt als fehlerhaft angesehen?

Ich schreibe eine recht komplexe JavaScript-Anwendung mit einer MVC-Architektur, die ich mithilfe von @ von Prototype implementierClass support und das Modulmuster. Die Anwendung verwendet AJAX und das Observer-Muster. Ich erstelle meine Controller-Instanz, wenn das DOM geladen wurde. Übergebe ihr eine Ansicht und einige Modelle, die aus JSON-Daten erstellt wurden.

Ich habe jedoch festgestellt, dass ich meine Controller-Instanz als Eigenschaft auf dem @ festlegen musWindow object - d.h. deklariere es ohnevar - weil ich einen AJAX-Erfolgs-Callback habe, der das Ansichtsobjekt des Controllers aktualisiert und an dieser Stelle im Code meine nette kleine MVC-Welt nicht im Geltungsbereich ist.

Ich habe untersucht, ob das View-Objekt als Parameter an die Funktion übergeben werden soll, die den AJAX-Code enthält. Dies wurde jedoch sehr unübersichtlich und hätte zu einigen fürchterlichen Verstößen gegen das MVC-Muster geführt, z. B. zur Kopplung von Modell und View. Es war schrecklich.

Macht Dinge wie das Speichern meiner Controller-Instanz direkt aufWindow als schlechte Form? Es riecht für mich ein bisschen wie die Verwendung einer globalen Variablen, aber ich sehe keinen Weg daran vorbei.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage