¿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" };
alert( obj1 == obj2 ); // false porque son dos objetos distintos
alert( obj1 == 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];
alert( obj1 == obj2 ); // false
alert( obj1 == obj1 ); // true
Pero he hecho la condicional:
Código PHP:
alert( window["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