En Safari sin complementos (y en realidad la mayoría de los otros navegadores), console.log
mostrará el objeto en el último estado de ejecución, no en el estado en el que console.log
se llamó.
Tengo que clonar el objeto solo para generarlo y console.log
obtener el estado del objeto en esa línea.
Ejemplo:
var test = {a: true}
console.log(test); // {a: false}
test.a = false;
console.log(test); // {a: false}
Respuestas:
Creo que lo estás buscando
console.dir()
.console.log()
no hace lo que quiere porque imprime una referencia al objeto, y para cuando lo abre, está cambiado.console.dir
imprime un directorio de las propiedades en el objeto en el momento en que lo llama.La idea de JSON a continuación es buena; incluso podría analizar la cadena JSON y obtener un objeto navegable como lo que .dir () le daría:
console.log(JSON.parse(JSON.stringify(obj)));
fuente
console.log
yconsole.dir
console.dir
no funciona en Chrome (v33). Aquí hay una comparación de las soluciones que la gente ha ofrecido: jsfiddle.net/luken/M6295Lo que generalmente hago si quiero ver su estado en el momento en que se registró es simplemente convertirlo a una cadena JSON.
fuente
function odump(o){ console.log($.parseJSON(JSON.stringify(o))); }
Vanilla JS:
La respuesta de @evan parece mejor aquí. Simplemente (ab) use JSON.parse / stringify para hacer efectivamente una copia del objeto.
Solución específica de JQuery:
Puede crear una instantánea de un objeto en un momento determinado con
jQuery.extend
Lo que realmente está sucediendo aquí es que jQuery está creando un nuevo objeto con el
test
contenido del objeto y lo está registrando (para que no cambie).AngularJS (1) solución específica:
Angular proporciona una
copy
función que puede usarse para el mismo efecto:angular.copy
Función de envoltura Vanilla JS:
Aquí hay una función que se ajusta
console.log
pero hará una copia de cualquier objeto antes de cerrar la sesión.Escribí esto en respuesta a algunas funciones similares pero menos robustas en las respuestas. Admite múltiples argumentos, y no intentará copiar cosas si no son objetos normales .
ejemplo de uso :
consoleLogWithObjectCopy('obj', {foo: 'bar'}, 1, /abc/, {a: 1})
fuente
Eso
> Object
en la consola, no solo muestra el estado actual. En realidad, está aplazando la lectura del objeto y sus propiedades hasta que lo expanda.Por ejemplo,
Luego expanda la primera llamada, será correcta, si lo hace antes de que
console.log
regrese la segundafuente
usando la sugerencia de Xeon06, puede analizar su JSON en un objeto, y aquí está la función de registro que ahora uso para volcar mis objetos:
fuente
Definí una utilidad:
y cuando quiero iniciar sesión en la consola simplemente hago:
¡Funciona muy bien!
fuente
Es posible que desee registrar el objeto de forma legible para humanos:
Esto sangra el objeto con 2 espacios en cada nivel.
¿Cómo puedo imprimir JSON con JavaScript?
fuente
Hay una opción para usar una biblioteca de depurador.
https://debugjs.net/
Simplemente incluya el script en su página web y coloque declaraciones de registro.
Inicio sesión
fuente
Me pueden disparar por sugerir esto, pero esto puede llevarse un paso más allá. Podemos extender directamente el objeto de la consola para que quede más claro.
No sé si esto causará algún tipo de colisión de biblioteca / fusión nuclear / rasgadura en el continuo espacio-tiempo. Pero funciona muy bien en mis pruebas qUnit. :)
fuente
Simplemente actualice la página después de abrir la consola o abra la consola antes de enviar la solicitud a la página de destino ...
fuente
Simplemente imprima todo el objeto en la consola.
fuente