Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/03/2014, 08:15
GreenKhulta
 
Fecha de Ingreso: febrero-2014
Ubicación: Tarragona
Mensajes: 13
Antigüedad: 10 años, 2 meses
Puntos: 1
problema con los parametros

Buenas gente del foro. llevo tan solo 2 meses aprendiendo js y como es normal me

encuentro con algun que otro problema. La cuestion que tengo ahora

es esta IIFE(funcion autoinvocada) enlazada a la variable module que retorna un

objeto con diversos metodos.

en la parte privada tengo un constructor Counter que crea objetos con las

propiedades value y step.

posteriormente instancio dos objetos a partir de este constructor.

El problema surge en los metodos retrieve y add donde hay que especificar

el objeto como parametro.

cuando lo hago:

module.retrieve(score);

me indica que el objeto score no existe cuando en realidad si que existe en la

zona privada. de hecho he creado un metodo llamado r que retorna el objeto

score y me lo devuelve perfectamente.

alguien sabe que estoy haciendo mal? gracias por adelandado.


Código Javascript:
Ver original
  1. var module = (function () {
  2.  
  3.     function Counter(step){
  4.     this.value = 0;
  5.     this.step = step || 1;
  6.     }
  7.  
  8.  
  9.  
  10.     Counter.prototype.b = function () {
  11.     var that = this;
  12.     return {
  13.         set: function() { that.value += that.step; },
  14.         get: function() { return that.value; },
  15.         restart: function () {that.value = 0; }
  16.     };
  17.     };
  18.  
  19.     var score = new Counter(5);
  20.     var cErrors = new Counter();
  21.     var list = [score,cErrors];
  22.    
  23.     return {
  24.    
  25.     retrieve : function (obj) {
  26.         return obj.value;
  27.     },
  28.     add : function (object) {
  29.         object.b().set();
  30.     },
  31.     restart : function (){
  32.         list.forEach(function (e) {
  33.             e.b().get();
  34.         });    
  35.     },
  36.     r : function () {
  37.         return score;
  38.     }
  39.  
  40.     };
  41. })();