Zugriff auf Variablen nach dem dynamischen Laden eines Skripts

Ganz vorne dabei: Dieses Projekt verwendet kein JQuery.

Wir haben JavaScript von Drittanbietern. Es ist groß und haarig und muss nicht oft verwendet werden. Daher laden wir es dynamisch nur, wenn wir Folgendes tun müssen:

function loadBigHairyCode()
{
    var file = document.createElement('script')
    file.setAttribute("type","text/javascript")
    file.setAttribute("src","path/to/big/ugly/script/file.js")
    document.getElementsByTagName("head")[0].appendChild(file)

    magic_needs_to_happen_here
}

Das Laden des Skripts funktioniert einwandfrei, einschließlich einiger entsprechender CSS-Codes, die hier nicht angezeigt werden.

Die geladene Datei definiert eine Konstruktorfunktion (Aufruf)UglyGlobalFunc), die wir wie gewohnt an anderer Stelle verwenden (var foo = new UglyGlobalFunc(....)). Das Problem ist, weil der Rest dieser Datei irgendwie hässlich ist, müssen wir es ein bisschen reparieren, damit es weniger nervt. Insbesondere an dem Punkt, an dem ich oben gezeigt habe, dass "Magie hier passieren muss", möchte ich das Äquivalent von schreiben

UglyGlobalFunc.prototype.BodgeBodgeBodge = function() {....}

als würde ich die zugrunde liegende Datei bearbeiten.

Dies schlägt jedoch fehl, da UglyGlobalFunc zu diesem Zeitpunkt im Code undefiniert ist. Dies ist sinnvoll. Gleiches gilt für eine einfache Indirektionsebene wiewindow.UglyGlobalFunc.proto.... Meine Fragen sind also:

Sind die dynamisch geladenen Inhalte auch an dem Punkt der Ausführung verfügbar (an dem Magie stattfinden muss)? Oder werden sie erst "echt", nachdem loadBigHairyCode () zurückgekehrt ist und der Browser eine Art Aktualisierungszyklus durchläuft?

Wenn ja, wie kann ich darauf zugreifen? Eine Art getGlobalVariableByName ("string") Funktion?

Wenn nicht, dann ... aieee. Wie machen normale gesunde Menschen so etwas?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage