Lorsque j'utilise console.log()
un objet dans mon programme JavaScript, je vois simplement la sortie [object Object]
, ce qui n'est pas très utile pour déterminer de quel objet (ou même de quel type d'objet) il s'agit.
En C #, j'ai l'habitude de redéfinir ToString()
pour pouvoir personnaliser la représentation du débogueur d'un objet. Puis-je faire quelque chose de similaire en JavaScript?
javascript
debugging
tostring
devios1
la source
la source
typeof
).Réponses:
Vous pouvez également remplacer
toString
en Javascript. Voir exemple:Consultez cette discussion sur la façon de déterminer le nom du type d'objet dans JavaScript.
la source
toString
propriété prototype ,Object.prototype.toString.call(f)
sera toujours affichée[object Object]
.Premier remplacement
toString
pour votre objet ou le prototype:Puis convertissez en chaîne pour voir la représentation sous forme de chaîne de l'objet:
Si vous n'aimez pas le typage supplémentaire, vous pouvez créer une fonction qui enregistre les représentations sous forme de chaîne de ses arguments dans la console:
Usage:
Mettre à jour
E2015 fournit une syntaxe beaucoup plus agréable pour cela, mais vous devrez utiliser un transpilateur comme Babel :
la source
Un moyen simple d'obtenir une sortie déboguable dans le navigateur JS consiste simplement à sérialiser l'objet en JSON. Pour que vous puissiez passer un appel comme
Donc, pour un exemple,
alert("Blah! " + JSON.stringify({key: "value"}));
produit une alerte avec le texteBlah! {"key":"value"}
la source
Si vous utilisez Node, cela peut valoir la peine d'être envisagé
util.inspect
.Cela donnera:
Alors que la version sans inspecter imprime:
la source
Remplacez simplement la
toString()
méthode.Exemple simple:
Cela fait encore mieux lorsque vous définissez un nouveau type:
la source
v0.10.*
ou ChromeVersion 32.0.1700.102
. Tout en appelant directement toString (lame) ou en utilisant la coercition de type (lamer) fonctionnera avec cela, la console [/ info | log /] utilise l'ancien pré-mod toString.Si l'objet est défini par vous-même, vous pouvez toujours ajouter un remplacement toString.
la source
Avec les littéraux de modèle :
la source
Ajoutez la propriété 'Symbol.toStringTag' à l'objet personnalisé ou à la classe.
La valeur de chaîne qui lui est assignée sera sa description de chaîne par défaut car elle est accessible en interne par la
Object.prototype.toString()
méthode.Par exemple:
Afficher l'extrait de code
Certains types de Javascript tels que les cartes et les promesses ont un
toStringTag
symbole intégré définiPuisqu'il
Symbol.toStringTag
s'agit d'un symbole bien connu , nous pouvons le référencer et vérifier que les types ci-dessus ont la propriété Symbol.toStringTag -la source
toString()
absolue la seule façon d'y parvenirfunction MyObj() {} Object.prototype.toString.call(new MyObj()) // "[object MyObj]"
?Le journal de la console Chrome vous permet d'inspecter l'objet.
la source
console.log("this is my object:", obj)
.-Cette opération prend beaucoup de temps et son utilisation est déconseillée selon la documentation mozilla: https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/proto
-Apparemment, les navigateurs modernes ont désapprouvé le .prototype et ECMA6 spécifie l'utilisation de proper__proto__ à la place.
Ainsi, par exemple, si vous définissez votre propre géoposition d' objet, vous devez appeler la propriété __proto__ au lieu de .prototype :
la source
Voici un exemple comment stringifier un objet Map:
la source
Vous pouvez donner à tous les objets personnalisés leurs propres méthodes toString, ou en écrire une générale que vous pouvez appeler sur l'objet que vous regardez.
la source
Plutôt que de remplacer
toString()
, si vous incluez la bibliothèque JavaScript prototype , vous pouvez l'utiliserObject.inspect()
pour obtenir une représentation beaucoup plus utile.Les frameworks les plus populaires incluent quelque chose de similaire.
la source
Vous pouvez étendre ou remplacer dans JS
la source
la source