Существует 3 обычных способа создания модуля IIFE. Все они возвращают одно и то же значение, но синтаксически выглядят по-разному. Все они используют замыкания для доступа к закрытым свойствам внешней функции.
IIFE — это немедленно вызываемое функциональное выражение: внешняя функция заключена в круглые скобки и выполняется путем добавления завершающего набора круглых скобок. Когда эта функция выполняется, она возвращает объект, внутренние функции которого могут ссылаться на частные свойства через замыкания.
Соглашение №1: объявляйте функции в возвращаемом объекте:
вар мод = (функция () {
var privateProp = ‘имя’;
возвращение {
getName : function() { return privateProp; }
};
})();
2. Соглашение № 2: объявляйте функции вне возвращаемого объекта и используйте свойства метода возвращаемого объекта для ссылки на эти внутренние функции:
режим переменной = (функция () {
var privateProp = ‘имя’;
функция _getName() {
вернуть частноепроп;
}
возвращение {
получитьИмя : _получитьИмя
};
})();
3. Соглашение №3: объявите функции вне возвращаемого объекта и создайте объект для назначения этих внутренних функций свойствам метода объекта:
вар мод = (функция () {
var privateProp = ‘имя’;
вар темпмод = {};
tempMod.getName = функция () {
вернуть частноепроп;
}
вернуть темпмод;
})();
Все эти 3 способа создания модуля IIFE создают замыкания, которые возвращают объект, функции которого могут обращаться к закрытым свойствам.