2012-02-21 15 views
5

Acabo de comenzar a usar la consola en las Herramientas para desarrolladores de Chrome (bastante nuevo para Javascript en general). Observé que cuando registro consecutivamente la misma variable dos veces (un objeto en este caso), el registro lo apila y coloca un pequeño icono numérico al lado. Hago clic en este pensamiento que podré ver el objeto dos veces (ya que se ha actualizado dos veces), sin embargo, no sucede nada.Consola de Chrome Developer Tools - apilamiento de registros, ¿cómo veo las cosas re-registradas [Screenshot Inside]?

imagen para más aclaración:

enter image description here

Como se puede ver que hay un poco de "2" en un círculo azul al lado del desplegable Object. El primer registro habría tenido Object.num en 3, y el segundo en 4, sin embargo, todo lo que puedo ver es el segundo.

Se agradecerá cualquier respuesta sobre cómo ver ambos registros.

:).

Respuesta

1

Esta función personalizada log registrará una "instantánea" del objeto, por lo que en su ejemplo verá reflejada la propiedad "num" actualizada de su objeto en cada llamada al log.

Es una especie de trampa al registrar manualmente cada propiedad del objeto en un "grupo de consola". Pero, termina pareciendo bastante cerca de la salida console.log normal (sin el extraño comportamiento que usted señala en su pregunta).

Además, probablemente solo funcione en Chrome.

function log(obj) { 
    console.groupCollapsed(({}).toString.call(obj).split(' ')[1].split(']')[0]); 
    for (var k in obj) obj.hasOwnProperty(k) && console.log(k + ': ', obj[k]); 
    console.log('__proto__: ', obj.__proto__); 
    console.groupEnd(); 
}​ 

Pruébelo here.


Excelente pregunta, por cierto. Aprendí mucho sobre la consola que no conocía antes. :)

+0

solución brillante :), muchas gracias! – Avicinnian

1

Esto me ha pasado antes también. La única solución que pude encontrar fue generar algo entre las dos llamadas de salida. Así, por ejemplo, si usted tiene esto:

console.log(var); 
... 
console.log(var); 

hacerlo:

console.log(var); 
console.log('asdf'); 
... 
console.log(var); 
6

Esto sucede porque usted está registrando el mismo objeto exacta dos veces. Incluso si esto no da como resultado el apilamiento, solo vería que 'num' es 4, ya que la consola no tiene, según mi leal saber y entender, al menos, una copia de los objetos que registra. Esto es ocasionalmente un inconveniente, estoy de acuerdo.

Una forma me acaba de ocurrir de asegurar que obtendrá registros separados - pero con uso de la memoria añadido - es hacer algo como

console.log(JSON.parse(JSON.stringify(obj))); 

(esto debería funcionar, al menos). Si su objetivo es relativamente simple de interpretar a simple vista, puede simplemente omitir el JSON.parse allí y utilizar la forma de cadena JSON de su objeto para el registro.

También sugiero consultar la declaración debugger;: siempre que se encuentre en un programa JS, hará que el entorno detenga la ejecución del código y salga al depurador de scripts. Puede o no ser más apropiado para lo que sea que esté depurando.

1

De acuerdo con la documentation, mensaje de apilamiento se puede apagar por las marcas de tiempo que permite en los ajustes de la consola en general:

enter image description here

Cuestiones relacionadas