Я пытаюсь разобраться в раскрывающемся шаблоне модуля в javascript. Меня озадачивают две вещи в следующем фрагменте кода.
var Child = function () {
var totalPoints = 100;
addPoints = function (points) {
totalPoints += points;
return totalPoints;
};
getPoints = function () {
return totalPoints;
};
return {
points: totalPoints,
addPoints: addPoints
};
};
$(function () {
var george = Child();
console.log(george.points);
console.log(george.addPoints(50));
console.log(george.points);
});
Здесь в консоль записываются три значения: 100, 150, 100. Это говорит мне о том, что когда я вызываю «addPoints» со значением, переменная totalPoints не обновляется. Если я проверю значение totalPoints внутри функции addPoints, оно было правильно увеличено. Что происходит?
Если я использую консоль для проверки window.addPoints или window.getPoints, я вижу, что, поскольку я не использовал «var» перед объявлениями функций, они были добавлены в глобальную область. Разве это не так? Большинство примеров, которые я рассматриваю, делают это.
Любые указатели с благодарностью получены.