Como posso inspecionar um objeto em uma caixa de alerta? Normalmente alertar um objeto apenas lança o nome do nó:
alert(document);
Mas desejo obter as propriedades e métodos do objeto na caixa de alerta. Como posso obter essa funcionalidade, se possível? Ou há alguma outra sugestão?
Particularmente, estou procurando uma solução para um ambiente de produção onde console.log e Firebug não estão disponíveis.
javascript
object
inspect
Valentina
fonte
fonte
console.log
no firefox ou no ChromeJSON.stringify
é útil.Respostas:
O
for
-in
loops para cada propriedade em um objeto ou matriz. Você pode usar essa propriedade para obter o valor, bem como alterá-lo.Nota: Propriedades privadas não estão disponíveis para inspeção, a menos que você use um "espião"; basicamente, você sobrescreve o objeto e escreve algum código que faz um loop for-in dentro do contexto do objeto.
Para em parece:
Alguns exemplos de código:
Edit: Algum tempo atrás, eu escrevi meu próprio inspetor, se você estiver interessado, fico feliz em compartilhar.
Editar 2: Bem, eu escrevi um de qualquer maneira.
fonte
Que tal
alert(JSON.stringify(object))
com um navegador moderno?No caso de
TypeError: Converting circular structure to JSON
, aqui estão mais opções: Como serializar o nó DOM para JSON mesmo se houver referências circulares?A documentação:
JSON.stringify()
fornece informações sobre como formatar ou embelezar a saída.fonte
alert(JSON.stringify(object, null, 4)
onde4
é o número de espaços usados para indentação.stringify
não mostrará métodos:JSON.stringify({f: ()=>{}}) => "{}"
. Além disso, se o objeto implementatoJSON
método que você recebe o que esse método retorna, o que é inútil se você quiser inspecionar o objeto:JSON.stringify({toJSON: () => 'nothin'}) => '"nothin"'
.Use
console.dir(object)
e o plugin Firebugfonte
console.dir
recurso. Não consegui descobrir por que não conseguia mais visualizar o objeto completo no Firebug. Isso agora resolveu para mim. Obrigado!console.log
além da conveniência de exibição, por favorExistem alguns métodos:
Em um contexto de console, às vezes o .constructor ou .prototype pode ser útil:
fonte
Use seu console:
Ou, se você estiver inspecionando elementos dom html, use console.dir (objeto). Exemplo:
Ou se você tiver uma matriz de objetos js que pode usar:
Se você estiver gerando muitos console.log (objetos), você também pode escrever
Isso o ajudará a rotular os objetos gravados no console.
fonte
console
porque estou usando o estilo stackoverflow.com/q/7505623/1480391 e não é compatívelfonte
Esta é uma fraude flagrante da excelente resposta de Christian. Acabei de torná-lo um pouco mais legível:
fonte
Aqui está meu inspetor de objetos que é mais legível. Como o código demora muito para ser escrito aqui, você pode baixá-lo em http://etto-aa-js.googlecode.com/svn/trunk/inspector.js
Use assim:
fonte