2009-01-19 17 views

Respuesta

68

console.log es lo que más a menudo uso cuando se depura.

Pude encontrar este jQuery extension embargo.

+6

Esto es perfecto. He estado usando console.log, pero no me di cuenta de que podía pasarle un objeto. Durr ... – Eli

+5

Durr de hecho. Realmente no me di cuenta de esto hasta ahora, porque siempre inserto una cadena al comienzo de mi console.log() y cada vez que obtengo la representación de la cadena [Objeto Object]. Intenté console.log (myObj) y está mucho mejor ahora. – the0ther

+2

Además, console.dir es mejor para los objetos :) –

44

Puede usar muy fácilmente reflection para enumerar todas las propiedades, métodos y valores.

Para los navegadores basados ​​en Gecko puede utilizar el método .toSource():

var data = new Object(); 
data["firstname"] = "John"; 
data["lastname"] = "Smith"; 
data["age"] = 21; 

alert(data.toSource()); //Will return "({firstname:"John", lastname:"Smith", age:21})" 

Pero ya que utiliza Firebug, ¿por qué no usar console.log?

+0

mmm más fácil gracias: D – Gogol

9

También se puede hacer

console.log("a = %o, b = %o", a, b); 

donde ayb son objetos.

5

El comentario principal tiene un enlace roto a la documentación de console.log para Firebug, así que aquí está a link to the wiki article about Console. Empecé a usarlo y estoy bastante satisfecho con él como una alternativa a print_r() de PHP.

También hay que resaltar es que Firebug le da acceso a JSON devuelto objetos incluso sin que el registro manualmente:

  • En la consola se puede ver la url de la respuesta AJAX.
  • Haga clic en el triángulo para expandir la respuesta y ver detalles.
  • Haga clic en la pestaña JSON en los detalles.
  • Verá los datos de respuesta organizados con triángulos de expansión.

Este método requiere un par de clics más para obtener los datos pero no requiere ninguna adición en su javascript real y no cambia su enfoque en Firebug fuera de la consola (el uso de console.log crea un enlace a la sección DOM de firebug, lo que obliga a hacer clic en volver a la consola después).

Por mi dinero prefiero hacer clic un par de veces más cuando quiero inspeccionar en lugar de perder el tiempo con el registro, sobre todo porque mantiene la consola limpia al no agregar ningún cruft adicional.

15

¿Qué tal algo como:

<script src='http://code.jquery.com/jquery-latest.js'></script> 

function print_r(o){ 
return JSON.stringify(o,null,'\t').replace(/\n/g,'<br>').replace(/\t/g,'&nbsp;&nbsp;&nbsp;'); } 
+0

una muy buena respuesta en realidad si alguien odia console.log :) – Gogol

6

He hecho un plugin de jQuery para el equivalente de

<pre> 
<?php echo print_r($data) ?> 
</pre> 

Puede descargarlo en https://github.com/tomasvanrijsse/jQuery.dump

+0

Modifiqué su código: la salida de su código debe conectarse a un div. Pero con esta función puedo mostrar en la consola tanto cadena como objeto. función print (variable) { if (tipo de variable == 'objeto') { $ .each (variable, función (clave, elemento) { console.log ('' + key + '=>' + element + ""); }); } else { console.log ('' + variable + ""); } } – ShivarajRH

+0

¿Podría enviar una solicitud de extracción en https://github.com/tomasvanrijsse/jQuery.dump – Tomas

+0

Envié una solicitud de extracción. :-) – ShivarajRH

6
$.each(myobject, function(key, element) { 
    alert('key: ' + key + '\n' + 'value: ' + element); 
}); 

Esto hace el trabajo por mí. :)

+0

Esto no funcionará con objetos multidimensionales. –

+0

Hmm eso podría ser cierto, pero ¿por qué no usa console.log para matrices/objetos complejos? – Gogol

+0

Si aún desea hacer esto (suponiendo que realmente necesita esto para codificar, en lugar de depurar), es posible que necesite declaraciones foreach anidadas, que en realidad pueden ser complejas en determinados momentos: P – Gogol

Cuestiones relacionadas