Я пытаюсь осознать шаблон модуля в 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» перед объявлениями функций, которые они были добавлены в глобальный охват. Разве это не неправильно? Похоже, что большинство примеров, которые я рассматриваю, делают именно это.
Любые указатели получены с благодарностью.