1

Тема: JScript: операции с областью видимости

Дано:
1) ScriptControl
2) Модульная загрузка кода в SC
3) Иерархия модулей:
уровень 1. модуль парсер - базовые инструменты для всех парсеров
уровень 2. модули авито, циан и т.д. - общие инструменты для работы со всеми разделами авито (дома, квартиры, земля и т.п.), циан и т.п.
уровень 3. модули авитоКвартиры, авитоДома и т.д. - настройки для работы с конкретными разделами источников

Пояснение:
Модули уровня 3 должны получать доступ к функциям и переменным, определенным в модулях уровней 2 и 1. Модули уровня 2 должны получать функции и инструменты из модуля уровня 1.

Вопрос:
Как подключить область видимости модулей уровня 1 и 2 в модули уровня 3?

Дополнение:
В существущей реализации загрузки кода глобальная область видимости SC глючит: после некоторой загрузки кода в ней остаются только сущности описанные кодом, а результаты возвращенные конструкцией (Immediately-invoked Function Expression) отсутствуют.
По этой причине модули организованы как функции (области видимости функций работают корректно):
moduleN(){
privateFunctionN()
return {
publicFunctionN()
}
}
Т.е. доступ к функциям модуля осуществляется functionToUseInModuleLevel3 = moduleN().publicFunctionN
При этом возникают понятные неудобства.
Насколько я понимаю, .bind, .call и .apply в MS JScript отсутствуют. Или неясно как их применять.
Как еще можно решить задачу подключения областей видимости функций?