Шаблон модуля раскрытия Javascript, общедоступные свойства

Я пытаюсь осознать шаблон модуля в 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);
        });
  1. Здесь в консоли записаны три значения: 100, 150, 100. Это говорит мне о том, что когда я вызываю addPoints со значением, переменная totalPoints не обновляется. Если я проверю значение totalPoints в функции addPoints, оно будет увеличено правильно. Что происходит?

  2. Если я использую консоль для проверки window.addPoints или window.getPoints, я могу это увидеть, потому что я не использовал «var» перед объявлениями функций, которые они были добавлены в глобальный охват. Разве это не неправильно? Похоже, что большинство примеров, которые я рассматриваю, делают именно это.

Любые указатели получены с благодарностью.

24
задан escist 5 March 2013 в 12:03
поделиться