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.