Я работаю над реализацией шаблона модуля Javascript, и я понимаю, как его использовать. То, что я не понимаю, - это концепция того, что происходит с частными переменными и методами после запуска функции и присвоением возвращаемого значения.Шаблон модуля Javascript, куда идут частные переменные?
Если у меня есть модуль, как так:
var myModule = (function() {
var privateVar1, privateVar2 = 10, privateLogger, privateHello;
privateLogger = function(someInput) {
console.log(someInput);
};
privateHello = function() { console.log('Hello World!');}
return {
publicVar: 'myName',
publicCounter: 0,
publicIncrementor: function(bar) {
bar++;
privateLogger(bar);
privateHello();
}
}
})();
console.log(myModule);
console.log(myModule.publicIncrementor.toString());
Когда я запускаю файл, я затем получить выход:
{ publicVar: 'myName',
publicCounter: 0,
publicIncrementor: [Function] }
function (bar) {
bar++;
privateLogger(bar);
privateHello();
}
Из этого, похоже, MyModule теперь переменная что знает только, что такое publicVar, publicCounter и publicIncrementor. Итак, как он узнает, что такое privateHello? Где это определение функции существует после создания экземпляра? Это не является частью myModule (console.log (myModule) не показывает его). Это не глобальная функция (исключая эту точку). Итак, где же теперь это определение функции?
Или это функция privateHello получает переопределение при каждом вызове myModule.publicIncrementor?
Спасибо, в некотором роде, что мне просто нужно было, чтобы описать, что происходит. Поэтому просто дать мне знать, чтобы закрыть исследования, это очень большая помощь. –
Также, глядя на это, я игнорировал часть IIFE этого упражнения, что является большим недоверием, поскольку это вопрос сферы. –
Эта ссылка была очень полезной: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures –