2011-11-27 3 views
6

Creo que me estoy volviendo loco.console.log() que muestra valores contradictorios para la misma propiedad de objeto

Uso console.log() para ver el estado de un objeto y luego en la siguiente línea hago un console.log() en una propiedad particular del mismo objeto y obtengo valores diferentes para cada uno.

El código que estoy usando es:

console.log(this.pictures.Items[pic].val); 

for(var i in this.pictures.Items[pic].val) { 
    console.log("property: %s, value: %s", i, this.pictures.Items[pic].val[i]); 
} 

y firebug salidas:

Picture { isLoaded=true, isSelected=false, img_src="imgs/image1.jpg", more...} 

property: isLoaded, value: false 
...more properties 

como se puede ver, 'IsLoaded' es verdadera cuando se conecta el objeto en sí, sino falsa cuando el registro de la propiedad.

He intentado volver a registrar el objeto después de que sea el caso, y es cierto nuevamente.

¿Alguien sabe lo que está sucediendo aquí?

Gracias

Rich

+0

http://jsfiddle.net/xmvUR/ ... No sé la ubicación real de su código. Pero estoy seguro de que no existen esos errores en JavaScript ... –

Respuesta

2

No estoy del todo seguro de si esto es lo que le está pasando o no, pero console.log() parece tener algunos problemas en algunos navegadores, donde haciendo un console.log() en un valor o utilizando una variable de índice que está cambiando o siendo iterada en una matriz no siempre funciona correctamente.

Supongo que tiene algo que ver con cosas que se organizan entre límites del proceso y quizás un retraso en la evaluación real de la expresión de registro hasta un momento en el que el objeto o índice real que se utiliza o referencia ha cambiado. He visto este problema en Chrome con seguridad, no sé sobre Firefox.

Debe ser capaz de evitar este problema en particular mediante el uso de cadenas de matemáticas para construir su cadena final. Si solo se pasa la cadena final a console.log(), donde todo se evalúa por completo, este problema no afectará a la salida.

Cuestiones relacionadas