Buenas caballeros,
Llevo toda la noche despierto intentando resolver un paradigma que yo mismo he creado dentro de una aplicacion web que estoy desarrollando, expongo un ejemplo simplificado de dicho error y un link a jsFiddle listo para ejecutar.
Ovbiamente esto va de alcances de los objetos, mi problema reside en que ...., bueno, es mas engorroso explicarlo que enseñarlo, asi que directamente expongo
un ejemplo simplificado lo máximo posible pero que sigue conteniendo el error
Código Javascript
:
Ver originalfunction prototype(id){
this.ID = id;
this.CrearDiv = function CrearDivs(){
ID_DuplicoLaVariableParaElAlcanceDelaPila = this.ID;
Capa = document.getElementById('espacioPrueva');
DivPrueva = document.createElement('div');
DivPrueva.style.width = 200+'px';
DivPrueva.style.height = 200+'px';
DivPrueva.style.margin = '10px 10px';
DivPrueva.style.background = 'hsla(120,100%,50%,1)';
Capa.appendChild(DivPrueva);
DivPrueva.addEventListener("mouseover", function () {console.log( ['ObjetoPrueva'+ID_DuplicoLaVariableParaElAlcanceDelaPila] ) }, false); // Aquí reside lo importante, al pasar el mouse, deberia de devolver el objeto correcto en el cual el rectángulo ha sido creado, solo devuelve el ultimo objeto creado ¿por que se sobrescriben? si solo crease un rectángulo aparecería en la consola el objeto uno
}
var ObjetoPruevaUno = new prototype(1);
ObjetoPruevaUno.CrearDiv();
var ObjetoPruevaDos = new prototype(2);
ObjetoPruevaDos.CrearDiv();
El experimento para hayar el error es sencillo, pasar el mouse por encima de los dos rectángulos creados ¿que obtendremos? pues siempre obtendremos el ultimo objeto creado en el log de la consola, es decir, me es imposible crear mediante este metodo una forma de devolver el objeto correcto del rectangulo, que seria 1 y 2 respectivamente, cuando en este ejemplo
en la consola siempre veremos que nos devuelve el objeto 2 ¿
por que?
Adjunto un link a JSFiddle con un ejemplo interactivo y listo :
http://jsfiddle.net/yRk3j/1/