¡saludos gentes!
me sumo al tema para explicar el problema inicial y así evitar que vuelva a repetir el mismo conflicto.
Cita:
Iniciado por dehm Entonces la duda es...¿es posible asignar un elemento referenciado con getElementById() como valor de un miembro del array?
si, es posible, y se hace tal como lo estás haciendo en esta línea:
Código:
cuadro1: document.getElementById ("Cuadro1"),
sin embargo, la razón del error
Unhandled Error: Undefined variable: cuadro1 se debe a otra causa. en tu código, la referencia
cuadro1 de las líneas restantes —top, left, width, height— no hacen referencia a la propiedad
cuadro.cuadro1 sino a una
variable que previamente debe existir. por eso el mensaje de error cita
Undefined variable. lo más lógico sería pensar que falta agregar
this por detrás de
cuadro1 para hacer referencia a dicha propiedad del objeto que se está creando:
Código:
...
top: document.defaultView.getComputedStyle(this.cuadro1, '').getPropertyValue('top'),
...
lo cierto es que seguirá mostrando el mismo error, a no ser que exista una variable global con el mismo nombre. esto porque
this en el contexto de un
objeto literal no hace referencia al propio objeto, sino más bien al objeto padre. el objeto padre bien puede ser Window u otro según sea donde se declare la variable. (en tu caso, la variable
cuadro).
en conclusión,
no es posible acceder a los identificadores (propiedades o métodos) de un
objeto literal mientras éste se está creando. nótese que no significa lo mismo que un método acceder a una propiedad del objeto luego del objeto ser creado.
Código:
// objeto literal en contexto global ;
var obj = {
num: 0,
double: this.num * 2,
ref: this
};
console.log(obj.num, // imprime 0 ;
obj.double, // imprime NaN, se esta multiplicando undefined por 2 ;
obj.ref // imprime el objeto Window ;
);
Código:
// this en un objeto literal creado en el contexto de un constructor ;
function F(){
this.obj = { ref: this };
}
var f = new F();
console.log(f.obj.ref, // imprime objeto F, o similar según intérprete ;
f.obj.ref === f // imprime true, ambos son el mismo objeto ;
);
Código:
// this en un método de un objeto literal ;
var obj = {
prop: 'un valor',
method: function(){ return this.prop; }
};
console.log( obj.method() ); // imprime el string 'un valor' ;