Доступ к конструктору внутри 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();