Foros del Web » Programando para Internet » Javascript »

nombre-objeto.length --> undefinded???? porque?

Estas en el tema de nombre-objeto.length --> undefinded???? porque? en el foro de Javascript en Foros del Web. este es mi codigo en el body que tengo: Código: <script> var a={saludo:"hola",despedida:"chau"}; for(var i in a) document.write(i+" -> "+a[i]+"<br>"); document.write(a.length+"<br>"); </script> y se ve ...
  #1 (permalink)  
Antiguo 18/04/2007, 11:29
Avatar de ASCENDEDMASTERS  
Fecha de Ingreso: julio-2005
Ubicación: Pergamino, Buenos Aires
Mensajes: 302
Antigüedad: 18 años, 10 meses
Puntos: 1
nombre-objeto.length --> undefinded???? porque?

este es mi codigo en el body que tengo:
Código:
<script>
var a={saludo:"hola",despedida:"chau"};
for(var i in a)
	document.write(i+" -> "+a[i]+"<br>");
document.write(a.length+"<br>");
</script>
y se ve lo siguiente en la pagina:

Cita:
saludo -> hola
despedida -> chau
undefined

¿Por qué?
__________________
Dios es la unica fuente de todo bien.
  #2 (permalink)  
Antiguo 18/04/2007, 12:24
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: nombre-objeto.length --> undefinded???? porque?

Eso es porque a es de tipo objeto, y de forma predeterminada las variables tipo objeto no tienen propiedad length definida; no así los arrays.

Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 18/04/2007, 13:17
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: nombre-objeto.length --> undefinded???? porque?

Si lo convertís en array, luego podés recorrelo así:
Código:
<script>
var a=[{saludo:"hola",despedida:"chau"}];
for(var i in a)
	for(j in a[i])alert(j+':'+a[i][j])
</script>
  #4 (permalink)  
Antiguo 18/04/2007, 13:40
Avatar de ASCENDEDMASTERS  
Fecha de Ingreso: julio-2005
Ubicación: Pergamino, Buenos Aires
Mensajes: 302
Antigüedad: 18 años, 10 meses
Puntos: 1
Re: nombre-objeto.length --> undefinded???? porque?

como puedo agregarle una "propiedad" a un objeto? osea si yo tengo

var a={saludo:"hola"};

y luego quiero agregarle otro y que quede asi al final como si hubiera hecho esto del principio

var a={saludo:"hola",despedida:"chau"};

__________________
Dios es la unica fuente de todo bien.
  #5 (permalink)  
Antiguo 18/04/2007, 14:00
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: nombre-objeto.length --> undefinded???? porque?

Hola:

De forma dinámica serría:

a["despedida"] = "chau";

Y me parece que se le puede poner el punto directamente (dinos si vale)

a.despedida = "chau";

otra cosa podría ser:
a.setAttribute("despedida", "chau");

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 18/04/2007, 14:11
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: nombre-objeto.length --> undefinded???? porque?

A ver si sirve:
Código:
<script>
a={saludo:"hola"};
a.despedida='chau';
for(j in a)alert(a[j])
alert('aquí borramos')
a={saludo:"hola"};
for(j in a)alert(a[j])
</script>
  #7 (permalink)  
Antiguo 18/04/2007, 14:12
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: nombre-objeto.length --> undefinded???? porque?

Hola, Pepe! Un gusto chocar con vos!!!
  #8 (permalink)  
Antiguo 18/04/2007, 14:27
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: nombre-objeto.length --> undefinded???? porque?

Cita:
Iniciado por Panino5001 Ver Mensaje
Hola, Pepe! Un gusto chocar con vos!!!
¡Je, je! Con esto del carnet por puntos, en España nos cuidamos un poco más...
Parece que podemos tener otro mensaje interesante sobre objetos...

Lo de setAttibute parece que no va en variables normales, pero se podría crear un método para Object's:

Object.prototype.setAttribute = function(nombre, valor) {
this[nombre] = valor;
}

... aunque el nuevo método se listaría en el bucle asociativo.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 18/04/2007, 16:15
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: nombre-objeto.length --> undefinded???? porque?

Cita:
Iniciado por Panino5001 Ver Mensaje
A ver si sirve:
Código:
<script>
a={saludo:"hola"};
a.despedida='chau';
for(j in a)alert(a[j])
alert('aquí borramos')
a={saludo:"hola"};
for(j in a)alert(a[j])
</script>
Para borrar propiedades de un objeto podemos usar delete:
Código PHP:
<script>

a={saludo:"hola"};
a.despedida='chau';
for(
j in a)
    
alert(a[j])
alert('aquí borramos')
//a={saludo:"hola"};
delete a.despedida;
for(
j in a)
    
alert(a[j])

</script> 
Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #10 (permalink)  
Antiguo 18/04/2007, 16:21
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: nombre-objeto.length --> undefinded???? porque?

Ojo con lo que me acabo de topar!
delete no varía la longitud del array!:
Código PHP:
var a=["uno","dos","tres","cuatro","cinco"];
for(var 
i in a)
    
document.write(i+" --> "+a[i]+", ");
document.write("<br/>");
for(var 
i=0i<a.lengthi++)
    
document.write(i+" --> "+a[i]+", ");
document.write("<br/>");
document.write("Longitud: "+a.length+"<br/><br/>");
//borramos
delete a[1];
for(var 
i in a)
    
document.write(i+" --> "+a[i]+", ");
document.write("<br/>");
for(var 
i=0i<a.lengthi++)
    
document.write(i+" --> "+a[i]+", ");
document.write("<br/>");
document.write("Longitud: "+a.length+"<br/>"); 
Cita:
0 --> uno, 1 --> dos, 2 --> tres, 3 --> cuatro, 4 --> cinco,
0 --> uno, 1 --> dos, 2 --> tres, 3 --> cuatro, 4 --> cinco,
Longitud: 5

0 --> uno, 2 --> tres, 3 --> cuatro, 4 --> cinco,
0 --> uno, 1 --> undefined, 2 --> tres, 3 --> cuatro, 4 --> cinco,
Longitud: 5
Pero for..in recorre todos los definidos y un for normal hasta donde le digamos, y cuidado si utilizamos length.

Solo por comentarlo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #11 (permalink)  
Antiguo 19/04/2007, 00:21
Avatar de ASCENDEDMASTERS  
Fecha de Ingreso: julio-2005
Ubicación: Pergamino, Buenos Aires
Mensajes: 302
Antigüedad: 18 años, 10 meses
Puntos: 1
Re: nombre-objeto.length --> undefinded???? porque?

ta, entendi derkenuke, pero como me queda mejor usar objetos, asique no problem

Chicos, Muchas Gracias, se ganaron el sobrenombre de "capos" me voy a seguir tecleando nomas.
__________________
Dios es la unica fuente de todo bien.
  #12 (permalink)  
Antiguo 19/04/2007, 05:07
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: nombre-objeto.length --> undefinded???? porque?

Cita:
Para borrar propiedades de un objeto podemos usar delete
Claro! Me había olvidado de ese operador! Gracias!
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 18:32.