No Safari sem complementos (e na maioria dos outros navegadores), console.log
o objeto será mostrado no último estado de execução, não no estado em que console.log
foi chamado.
Eu tenho que clonar o objeto apenas para produzi-lo via console.log
para obter o estado do objeto nessa linha.
Exemplo:
var test = {a: true}
console.log(test); // {a: false}
test.a = false;
console.log(test); // {a: false}
Respostas:
Eu acho que você está procurando
console.dir()
.console.log()
não faz o que você deseja, porque imprime uma referência ao objeto e, quando você o abre, ele é alterado.console.dir
imprime um diretório das propriedades no objeto no momento em que você o chama.A idéia do JSON abaixo é boa; você pode até analisar a string JSON e obter um objeto navegável como o que .dir () daria a você:
console.log(JSON.parse(JSON.stringify(obj)));
fonte
console.log
econsole.dir
console.dir
, não funciona no Chrome (v33). Aqui está uma comparação das soluções que as pessoas ofereceram: jsfiddle.net/luken/M6295O que eu costumo fazer se quiser ver seu estado no momento em que foi registrado é apenas convertido para uma string JSON.
fonte
function odump(o){ console.log($.parseJSON(JSON.stringify(o))); }
JS de baunilha:
A resposta de @ evan parece melhor aqui. Basta (ab) usar JSON.parse / stringify para efetivamente fazer uma cópia do objeto.
Solução específica JQuery:
Você pode criar um instantâneo de um objeto em um determinado momento com
jQuery.extend
O que realmente está acontecendo aqui é que o jQuery está criando um novo objeto com o
test
conteúdo do objeto e registrando-o (para que não mude).Solução específica AngularJS (1):
Angular fornece uma
copy
função que pode ser usada para o mesmo efeito:angular.copy
Função de wrapper Vanilla JS:
Aqui está uma função que envolve
console.log
mas faz uma cópia de qualquer objeto antes de desconectá-lo.Escrevi isso em resposta a algumas funções semelhantes, mas menos robustas, nas respostas. Ele suporta vários argumentos e não tentará copiar as coisas se elas não forem objetos regulares .
exemplo de uso :
consoleLogWithObjectCopy('obj', {foo: 'bar'}, 1, /abc/, {a: 1})
fonte
Isso
> Object
no console não mostra apenas o estado atual. Na verdade, adiar a leitura do objeto e suas propriedades até você expandi-lo.Por exemplo,
Em seguida, expanda a primeira chamada, ela estará correta, se você fizer antes do
console.log
retorno da segundafonte
usando a dica do Xeon06, você pode analisar seu JSON em um objeto, e aqui está a função de log que agora uso para despejar meus objetos:
fonte
Eu defini um utilitário:
e quando quero fazer logon no console, simplesmente faço:
Funciona muito bem!
fonte
Convém registrar o objeto de uma maneira legível por humanos:
Isso recua o objeto com 2 espaços em cada nível.
Como posso imprimir JSON usando JavaScript?
fonte
Há uma opção para usar uma biblioteca de depurador.
https://debugjs.net/
Basta incluir o script em sua página da web e colocar instruções de log.
Exploração madeireira
fonte
Posso me dar um tiro por sugerir isso, mas isso pode ser dado um passo adiante. Podemos estender diretamente o próprio objeto do console para torná-lo mais claro.
Não sei se isso causará algum tipo de colisão de biblioteca / colapso / ruptura nuclear no continuum do espaço-tempo. Mas funciona lindamente nos meus testes qUnit. :)
fonte
Simplesmente atualize a página depois de abrir o console ou abra o console antes de enviar a solicitação para a página de destino ....
fonte
Basta imprimir o objeto inteiro no console.
fonte