11
votes

Y a-t-il une méthode que je peux remplacer sur un objet JavaScript pour contrôler ce qui est affiché par console.log?

Je pense en particulier à Chrome, bien que Firebug soit intéressant. J'ai essayé Tostring () et ValueOf (), mais aucun de ceux qui ne semblent être utilisés. Fait intéressant, si je prends une fonction, cela affichera la définition de la fonction - mais si j'ajoute une méthode de ToString (), il montrera NULL!

var a = function(){};
console.log(a); // output: function (){}
a.toString = function(){ return 'a'; };
console.log(a); // output: null
a.valueOf = function(){ return 'v'; };
console.log(a); // output: null


1 commentaires

Voir aussi Ajuster la console.log Comportement de l'objet personnalisé pour un environnement nœud.js


4 Réponses :


4
votes

Il n'y a aucun moyen que je sache. Votre meilleur pari sera de définir une méthode tostring () sur l'objet que vous souhaitez enregistrer, puis l'appelez directement ou indirectement: xxx


0 commentaires

0
votes

Vous devriez obtenir un meilleur résultat de Firebug, vous devriez obtenir xxx

http://code.google.com/p/fbug/issues/detetail?id=3117


2 commentaires

Je dois admettre que je n'aurais réellement pas essayé en Firebug (j'étais un utilisateur de Firebug matrice, mais je suis sur un Mac et que Chrome se sent légèrement moins libre que Firefox, alors qu'avec l'intégré La console étant disponible en chrome, j'ai eu une sorte d'utilisation de cela récemment). Je reçois "Fonction ()" comme sortie sur Firebug, qui est au moins moins Puzzling que le comportement chromé de "réglage de la touche ToString () modifie l'affichage, mais pas à la sortie de Tostring (), hahaha! " Et en plus, ce n'est pas exactement un cas d'utilisation courante. Une fonction avec des attributs ajoutés? Je suis un cinglé.


Moi aussi ;-) Et ici quelques personnages, alors.



1
votes

Juste pour les futurs lecteurs, il y a maintenant un moyen de faire exactement ce qui est demandé ici.

Pour la solution, veuillez lire ce poste dupliqué:

Ajuster la console.log Comportement de l'objet personnalisé


2 commentaires

Aussi pour les futurs lecteurs: la solution postée Il fonctionne dans le nœud, mais pas dans les navigateurs


@Lgenzelis vous avez totalement raison, pour une raison quelconque, je suppose que Nodejs, désolé!



1
votes

Vous pouvez le faire en chrome de nos jours avec un formateur personnalisé de devtools. Ils ne semblent pas être officiellement documentés nulle part et ne sont pas activés par défaut - vous devez donc les activer dans (Dev Outils Paramètres)> Console> Activer les formateurs personnalisés. Mais vous pouvez ensuite ajouter un formateur personnalisé pour votre objet: xxx

quelques mots d'avertissement:

  • Vous devez retourner un JSONML ([Nom-tag, attraists, enfants ...]) de la formatrice. Si vous renvoyez une chaîne JSONML ou une chaîne nue non valide, elle échoue silencieusement ou jette une erreur.
  • Le formateur doit avoir une fonction d'en-tête () et de hasardores (), et si Hasbody () retourne vrai, doit également avoir une fonction corporelle (). Sinon, votre formateur sera ignoré silencieusement ou lancer une erreur.
  • Beaucoup de types d'éléments ne sont pas pris en charge. Je n'étais capable que d'obtenir div et span fonctionner; p , fort et d'autres éléments ont tous échoué. Mais vous pouvez les imiter avec CSS.
  • La fenêtre window.devtoolsformss est NULL par défaut, mais j'ai ajouté le chèque car les extensions peuvent déjà ajouter leurs propres formateurs personnalisés.

    Vous pouvez trouver un peu plus d'informations ici: HTTPS: // docs.google.com/document/d/1fteczxt9cxfetuprt2expqkxui4nwfivuns_335t3u/preview


0 commentaires