Quando eu console.log()
crio um objeto em meu programa JavaScript, apenas vejo a saída [object Object]
, que não é muito útil para descobrir que objeto (ou mesmo que tipo de objeto) é.
Em C #, estou acostumado a substituir ToString()
para poder personalizar a representação do depurador de um objeto. Posso fazer algo semelhante em JavaScript?
javascript
debugging
tostring
devios1
fonte
fonte
typeof
).Respostas:
Você também pode substituir
toString
em Javascript. Consultar exemplo:Veja esta discussão sobre como determinar o nome do tipo de objeto em JavaScript.
fonte
toString
propriedade do protótipo ,Object.prototype.toString.call(f)
ainda será exibido[object Object]
.Primeira modificação
toString
para seu objeto ou protótipo:Em seguida, converta em string para ver a representação de string do objeto:
Se você não gosta da digitação extra, pode criar uma função que registra representações de string de seus argumentos no console:
Uso:
Atualizar
E2015 fornece uma sintaxe muito mais agradável para essas coisas, mas você terá que usar um transpiler como o Babel :
fonte
Uma maneira fácil de obter uma saída depurável no navegador JS é apenas serializar o objeto em JSON. Então você pode fazer uma ligação como
Então, por exemplo,
alert("Blah! " + JSON.stringify({key: "value"}));
produz um alerta com o textoBlah! {"key":"value"}
fonte
Se você estiver usando o Node, pode valer a pena considerar
util.inspect
.Isso produzirá:
Enquanto a versão sem inspecionar imprime:
fonte
Basta substituir o
toString()
método.Exemplo simples:
É ainda melhor quando você define um novo tipo:
fonte
v0.10.*
ou ChromeVersion 32.0.1700.102
. Enquanto chamar toString diretamente (coxo) ou usar coerção de tipo (lamer) funcionará com isso, o console [/ info | log /] usa toString pré-mod antigo.Se o objeto for definido por você, você sempre poderá adicionar uma substituição toString.
fonte
Com literais de modelo :
fonte
Adicione a propriedade 'Symbol.toStringTag' ao objeto ou classe personalizada.
O valor da string que é atribuído a ele será sua descrição de string padrão porque é acessado internamente pelo
Object.prototype.toString()
método.Por exemplo:
Exibir trecho de código
Alguns tipos de Javascript, como Mapas e Promessas, têm um
toStringTag
símbolo integrado definidoPor
Symbol.toStringTag
ser um símbolo bem conhecido , podemos fazer referência a ele e verificar se os tipos acima têm a propriedade Symbol.toStringTag -fonte
toString()
direta, é a única maneira de conseguirfunction MyObj() {} Object.prototype.toString.call(new MyObj()) // "[object MyObj]"
?O log do console do Chrome permite que você inspecione o objeto.
fonte
console.log("this is my object:", obj)
.-Esta operação leva muito tempo para ser concluída e seu uso é desencorajado de acordo com os documentos do mozilla: https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/proto
-Aparentemente, os navegadores modernos desaprovaram .prototype e ECMA6 especifica usando o__proto__ apropriado.
Assim, por exemplo, se você estiver definindo você próprio objeto Georeferenciação você deve chamar __proto__ propriedade em vez de .prototype :
fonte
Aqui está um exemplo de como stringificar um objeto Map:
fonte
Você pode dar a qualquer objeto personalizado seus próprios métodos toString ou escrever um geral que possa chamar no objeto que está olhando-
fonte
Em vez de substituir
toString()
, se você incluir a Biblioteca JavaScript Prototype , você pode usarObject.inspect()
para obter uma representação muito mais útil.As estruturas mais populares incluem algo semelhante.
fonte
Você pode estender ou substituir em JS
fonte
fonte