offline version v3
Запись на курсы по HTML, CSS, JavaScript, PHP, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
⊗jsPmMCVFEO 502 of 503 menu

Экспорт объекта в модулях через замыкания в JavaScript

Пусть у нас есть следующий модуль:

;(function() { function func1() { alert('функция модуля'); } function func2() { alert('функция модуля'); } function func3() { alert('функция модуля'); } })();

Пусть мы хотим экспортировать наружу все три функции. В этом случае, чтобы не плодить снаружи модуля лишних имен функций, лучше записать все функции в один объект и выполнить экспорт этого объекта:

;(function() { function func1() { alert('функция модуля'); } function func2() { alert('функция модуля'); } function func3() { alert('функция модуля'); } window.module = {func1: func1, func2: func2, func3: func3}; })();

Так как имена ключей и переменных совпадают, то объект с функциями можно упросить:

;(function() { function func1() { alert('функция модуля'); } function func2() { alert('функция модуля'); } function func3() { alert('функция модуля'); } window.module = {func1, func2, func3}; })();

Можно пойти и другим путем. Будем записывать функции в объект сразу при описании функции, вот так:

;(function() { let module = {}; module.func1 = function() { alert('функция модуля'); } module.func2 = function() { alert('функция модуля'); } module.func3 = function() { alert('функция модуля'); } window.module = module; })();

Дан следующий модуль:

;(function() { let str1 = 'переменная модуля'; let str2 = 'переменная модуля'; let str3 = 'переменная модуля'; function func1() { alert('функция модуля'); } function func2() { alert('функция модуля'); } function func3() { alert('функция модуля'); } function func4() { alert('функция модуля'); } function func5() { alert('функция модуля'); } })();

Экспортируйте наружу объект с первыми пятью функциями и первыми двумя переменными.

enru