Какой смысл этой JavaScript структуры кода? - PullRequest
1 голос
/ 31 марта 2020

Я нашел код, где он был структурирован так:

(function() {
 function Usermanager(user) {
    ...
    ...
 // other properties
}
//prototype methods

// And then noticed this line:

window.Usermanager = Usermanager;

}()

Разве эта строка не является альтернативой экспорту модулей в старом синтаксисе, где модули недоступны?

window.Usermanager = Usermanager;

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

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Разве эта строка не является альтернативой экспорту модулей

Не совсем. Это создает глобальный в среде браузера. Он далеко не так управляем, как при использовании общих JS модулей.

Если да, то какой смысл добавлять его в функцию IIFE, которая обеспечивает возможность сохранения всего частного?

Чтобы сохранить все остальное в секрете и открыть только одну переменную.

0 голосов
/ 31 марта 2020

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

(function(win, doc){
   var _private = "private";
   win.public = "public";
})(window, document);

Я надеюсь, что это небольшое объяснение полезно.

...