Javascript revelando o padrão do módulo, propriedades públicas

Estou tentando entender o padrão do módulo revelador em javascript. Estou perplexo com duas coisas sobre o seguinte snippet de códig

        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);
        });

Os três valores gravados no console aqui são 100, 150, 100. Isso me diz que quando eu chamo "addPoints" com um valor, a variável totalPoints não é atualizada. Se eu examinar o valor de totalPointsdentr a função addPoints éte foi incrementado corretamente.O que está acontecendo

Se eu usar o console para examinar window.addPoints ou window.getPoints, posso ver isso porque não usei "var" na frente das declarações de função que foram adicionadas ao escopo global. Isso não está errado? A maioria dos exemplos que estou vendo parece fazer iss

ualquer ponteiro recebido com gratidã

questionAnswers(4)

yourAnswerToTheQuestion