Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/08/2007, 09:25
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 4 meses
Puntos: 45
Re: Obtener nombre de la variable que guarda el objeto

¿Qué? No he entendido lo que has querido decir MaBoRaK. Sí que se consigue recorrer el objeto window, de hecho el resultado por pantalla es:
Cita:
Iniciado por IE6
window[onbeforeunload] >> null
window[onafterprint] >> null
window[top] >> [object]
...
window[status] >>
window[onhelp] >> null
window[name] >>
Ose que ahí si están las propiedades de window. Y el alert da null, que quiere decir que ninguna variable recorrida ha sido igual a this, luego la condicional ha dado siempre false (como se puede esperar).

El resultado en FF2 es:
Cita:
Iniciado por FF2
window[window] >> [object Window]
window[marte] >> [object Object]
window[planetaTierra] >> [object Object]
No hay ninguna propiedad predefinida, pero están todas las variables (otra duda es cómo sacar lo que devuelve IE en FF... pero bueno).





Por lo de comparar objetos ¿te refieres a ésto?
Código PHP:
var obj1 = { a"hola"b:"que tal" };
var 
obj2 = { a"hola"b:"que tal" };
alertobj1 == obj2 );      // false porque son dos objetos distintos
alertobj1 == obj1 );      // true porque son el mismo objeto 
El resultado es el esperado. Para ver que tienen iguales propiedades habría que ir mirando una por una, el operador == sólo me dice si son el mismo objeto o el mismo array si es que son de tipo no nativo (arrays, objetos, colecciones...). Igual que aquí:
Código PHP:
var obj1 = [0,1,2,3,4];
var 
obj2 = [0,1,2,3,4];
alertobj1 == obj2 );      // false
alertobj1 == obj1 );      // true 
Pero he hecho la condicional:
Código PHP:
alertwindow["planetaTierra"] == planetaTierra ); 
Y da true, se supone que son la misma variable, o que apuntan a la misma variable. Es decir:
Código PHP:
var obj1 = [0,1,2,3,4];
var 
obj2 obj1.copia();
document.write("obj1: "+obj1+"<br/>");    // 0,1,2,3,4
document.write("obj2: "+obj2+"<br/>");    // 0,1,2,3,4
document.write("obj1==obj2: "+(obj1==obj2)+"<br/>");    // false
document.write("obj1==obj1: "+(obj1==obj1)+"<br/>");    // true
document.write("obj2==obj2: "+(obj2==obj2)+"<br/>");    // true
document.write("obj1.copia()==obj1.copia(): "+(obj1.copia()==obj1.copia())+"<br/>");    // false
var obj3 obj1;
document.write("obj3: "+obj3+"<br/>");    // 0,1,2,3,4
document.write("obj1==obj3: "+(obj1==obj3)+"<br/>");    // true 
Por el mismo proceso obj1==obj3, porque apuntan a la misma variable, es decir, si modificamos obj1 y obj3 se modifica la misma cosa (espacio en la memoria).


Entonces la pregunta es, ¿Cómo puedo recorrer las variables (que son hijas propiedades de window) para compararlas con la mía en IE?


Perdón por la parrafada
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.