encapsulamento no padrão de módulo javascript

Eu estava lendo este linkhttp://addyosmani.com/largescalejavascript/#modpattern

E vi o seguinte exemplo.

<code>var basketModule = (function() {
var basket = []; //private

return { //exposed to public
       addItem: function(values) {
            basket.push(values);
        },
        getItemCount: function() {
            return basket.length;
        },
        getTotal: function(){
            var q = this.getItemCount(),p=0;
            while(q--){
                p+= basket[q].price;
            }
        return p;
        }
      }
}());

basketModule.addItem({item:'bread',price:0.5});
basketModule.addItem({item:'butter',price:0.3});

console.log(basketModule.getItemCount());
console.log(basketModule.getTotal());
</code>

Ele afirma que "O padrão de módulo é um design popular que envolve o padrão 'privacidade', estado e organização usando closures" Como isso é diferente de escrevê-lo como o abaixo? A privacidade não pode ser simplesmente aplicada com o escopo da função?

<code>var basketModule = function() {
var basket = []; //private
       this.addItem = function(values) {
            basket.push(values);
        }
        this.getItemCount = function() {
            return basket.length;
        }
        this.getTotal = function(){
            var q = this.getItemCount(),p=0;
            while(q--){
                p+= basket[q].price;
            }
        return p;
        }

}

var basket = new basketModule();

basket.addItem({item:'bread',price:0.5});
basket.addItem({item:'butter',price:0.3});
</code>

questionAnswers(1)

yourAnswerToTheQuestion