Dostęp do zmiennych po dynamicznym załadowaniu skryptu

Z przodu: ten projekt nie używa JQuery.

Mamy JavaScript innych firm; jest duży i włochaty i nie musi być często używany, więc dynamicznie ładujemy go tylko wtedy, gdy musimy:

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
}

Ładowanie skryptu działa dobrze, włącznie z odpowiednim CSS, który nie jest tutaj pokazany.

Załadowany plik definiuje funkcję konstruktora (nazwij jąUglyGlobalFunc), którego używamy gdzie indziej w zwykły sposób (var foo = new UglyGlobalFunc(....)). Problem polega na tym, że reszta tego pliku jest trochę brzydka, musimy to trochę poprawić, aby go mniej wysysało. W szczególności, w miejscu, w którym pokazałem „magia musi się tutaj wydarzyć” powyżej, chcę napisać odpowiednik

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

tak, jakbym edytował podstawowy plik.

Ale to się nie udaje, ponieważ w tym momencie kodu UglyGlobalFunc jest niezdefiniowany, co ma sens. To samo dotyczy prostego poziomu orientacjiwindow.UglyGlobalFunc.proto.... Moje pytania to:

Czy dynamicznie ładowane treści są dostępne nawet w tym momencie wykonania (gdzie magia musi się wydarzyć)? Czy też nie stają się „prawdziwe”, dopóki nie powróci loadBigHairyCode () i przeglądarka nie przejdzie przez jakiś cykl odświeżania?

Jeśli tak, to jak mam do nich dostęp? Jakaś funkcja getGlobalVariableByName („string”)?

Jeśli nie, to ... aieee. Jak normalni zdrowi ludzie robią takie rzeczy?

questionAnswers(2)

yourAnswerToTheQuestion