Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/04/2011, 18:11
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Problema con scope

buenas cronos!

veras, como te decia en otro momento, el codigo lo encuentro muy denso para analizar. por lo que he analizado hasta el momento, me parece que el problema no es de scope sino de procedimiento. todavia no logro dar el punto exacto, pero me parece que debe estar en algun punto por aqui.
Código:
    })(); // /func
    if(este.gradienteEncurso){ return setTimeout(func, obj.intervalo); }
    func();
   } // /for
sin embargo, algunas observaciones.
  • fijate que en la primera linea marcada tienes un error tonto pero despues de uno ver tanto codigo ni cuenta uno se da. la propiedad deberia ser gradienteEnCurso.
  • en la siguiente linea, no le encuentro sentido el porque crear una funcion anonima autoinvocada. dicha linea realmente no tiene ningun proposito salvo crear un array. me parece que quisistes hacer un closure pero en realidad no se crea ninguno. ni siquiera es necesario hacerlo asi puesto que estas creando un array los valores de las variables son directamente asignado cuando se crea el array.
    Código:
        var clrs = (function(){ return [act, sig]; })();
    
    lo mismo con la funcion func, en ningun momento se crea un closure.
  • por ultimo, esta observacion es mas meramente por gusto o legibilidad. veo que tienes la costumbre de constantemente calcar objetos. es decir, asignar propiedades por defectos a un objeto cuando no estan presentes. me refiero por ejemplo a este codigo.
    Código:
      for(var i in padre.porDefecto){ obj[i] = objeto[i] || padre.porDefecto[i]; } // Calcar porDefecto
    
    opino que el codigo seria mas legible si usaras constructores y en el prototipo asignar los valores por defectos. un ejemplo a lo que me refiero, pero por supuesto adapartarlo a tu libreria.
    Código:
    Object.prototype.setProp = function(data){
    if(data === undefined || data.constructor != Object) return false;
    for(var prop in data) if(data.hasOwnProperty(prop)) this[prop] = data[prop];
    return true;
    };
    
    function Sample(){
    if(!this.setProp(arguments[0])) throw new TypeError("Unexpected type of value in arguments.");
    }
    
    Sample.prototype = {
    prop: 0,
    name: "default",
    done: false
    };
    
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.