Доступ к конструктору внутри IIFE

Часто в JavaScript я вижу анонимную функцию, которая вызывается немедленно, которая содержит функцию конструктора. Что-то вроде этого:

(function(){
    function Constructor{};
    //code and stuff
})();

Это кажется полезным, поскольку создает Closure (?), Поэтому вы можете хранить переменные внутри функции отдельно от Global Scope. Что мне трудно понять, так это то, как я могу получить доступ к этому конструктору из Global Scope. Например, скажем, приведенный выше код содержится в файле JavaScript, который переносится в документ HTML с тегом script. Теперь, в документе (в другом теге скрипта), как я могу создать экземпляр Object с помощью конструктора в анонимной функции?

1 ответ

Решение

Как вы заявили, основная цель немедленно вызываемой функции - предотвратить загрязнение глобальной области действия. Следовательно, все переменные и функции, объявленные в IIFE, могут быть доступны только внутри этой функции.

Как я понимаю из вашего примера, вы пытаетесь модулировать свое приложение и разделить логику вашего приложения на разные файлы сценариев. Я бы порекомендовал вам взглянуть на шаблон модуля:

var Module1 = (function() {

    return {
        Constructor: function Constructor(){
            console.log('Hi, there!');
        }
    }
})();

Затем вы можете просто получить доступ к функции Constructor, используя следующий код:

var test = Module1.Constructor();
Другие вопросы по тегам