Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/05/2012, 18:59
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Arrays de objetos

buenas,
Cita:
Diria que este condicional no tien mucho sentido

if (balls[i])

balls[i]={ speed : 100 };

y eso no es un booleano, no?
cito el texto porque sospecho que hay una especie de duda. en este caso particular todos generan true porque un objeto convertido a boolean siempre devuelve true. no obstante, en algo tienes razón... la condición carece de sentido ya que no existe la posibilidad de un false, asumiendo que siempre se itera por la longitud del array y que todos los elementos sean un objeto.

el problema surge en esta línea.
Código:
for (i = 0; i < numberOfFireballs; i++) {
	balls[i] = fireball;
};
específicamente porque le estás asignando el mismo objeto a todos los elementos del array. es decir, cada elemento es una referencia de las demás. en javascript, los objetos no se asignan como copia sino como referencia. de modo que múltiples contenedores accesan al mismo objeto y por ende cuando uno altera el estado en los demás se refleja.

Código:
var obj = {prop: "value"};
var ref = obj;
ref.prop = 'modified';
alert(obj.prop); // modified;
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.