Foros del Web » Programando para Internet » Javascript »

Obtener nombre de la variable que guarda el objeto

Estas en el tema de Obtener nombre de la variable que guarda el objeto en el foro de Javascript en Foros del Web. Hola! A veces se me plantea que quiero saber el nombre de la variable que contiene el objeto, es decir: Código PHP: var  planetaTierra  = new  ...
  #1 (permalink)  
Antiguo 08/08/2007, 07:44
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Obtener nombre de la variable que guarda el objeto

Hola!

A veces se me plantea que quiero saber el nombre de la variable que contiene el objeto, es decir:
Código PHP:
var planetaTierra = new _mundo("azul");
var 
marte = new _mundo("rojo");
alertplanetaTierra.getNombrePlaneta() ); 
Lo que tiene que alertar es el string "planetaTierra".

He conseguido hacerlo en FF, recorro el objeto window, y contiene las variables. En IE (IE6) no da resultado, y es que si recorremos window verdaderamente no itera sobre window["planetaTierra"], pero si alertamos esa misma sentencia, ahí sí accedemos a la variable planetaTierra. Realmente hay muucha diferencia entre las propiedades que accedemos en FF y en IE.

El código de los objetos _mundo() es el siguiente:
Código PHP:
function _mundo(color) {
    
this.color color;
    
this.getNombrePlaneta = function() {
        for(var 
i in window) {
            
document.write"window["+i+"] >> "+window[i] +"<br/>");
            if( 
window[i] == this ) {
                return 
i;
            }
        }
        return 
null;
    }


¿Alguna posible solución para IE?
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #2 (permalink)  
Antiguo 08/08/2007, 09:03
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: Obtener nombre de la variable que guarda el objeto

loading.........



Pasa que para IE un objeto literal, instancia, evento es un object asi que no podras hacer comparaciones de funciones u objetos.... por lo que si logras recorrer window siempre te dar´a true.

connection closed.
__________________

Maborak Technologies
  #3 (permalink)  
Antiguo 08/08/2007, 09:25
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 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.
  #4 (permalink)  
Antiguo 25/08/2007, 17:40
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Obtener nombre de la variable que guarda el objeto

¿A nadie se le ha ocurrido nada hasta ahora?

Estoy seco de ideas...
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:55.