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>