enkapsulacja we wzorze modułu javascript
Czytałem ten linkhttp://addyosmani.com/largescalejavascript/#modpattern
I zobaczyłem następujący przykład.
<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>
Stwierdza, że „wzorzec modułu jest popularnym projektem, który obejmuje„ prywatność ”, stan i organizację za pomocą zamknięć”. Czym różni się to od pisania tego, jak poniżej? Czy prywatność nie może być po prostu egzekwowana za pomocą zakresu funkcji?
<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>