151 votes

Est-il possible de remplacer la fonction toString () de JavaScript pour fournir une sortie significative pour le débogage?

Lorsque je console.log() un objet de mon programme JavaScript, je ne vois que la sortie [object Object] , ce qui n'est pas très utile pour déterminer de quel objet (ou même quel type d'objet) il s'agit.

En C #, je suis habitué à surcharger ToString() pour pouvoir personnaliser la représentation du débogueur d'un objet. Y a-t-il quelque chose de similaire que je puisse faire en JavaScript?

123voto

spektom Points 11130

Vous pouvez également remplacer toString en Javascript. Voir exemple:

 function Foo() 
{
}

// toString override added to prototype of Foo class
Foo.prototype.toString = function()
{
    return "[object Foo]";
}

var f = new Foo();
alert(f);  // popup displays [object Foo]
 

Voir cette discussion sur la façon de déterminer le nom du type d'objet en JavaScript.

14voto

Paul V Points 635

Un moyen simple d’obtenir une sortie débogable dans le navigateur JS consiste à sérialiser l’objet au format JSON. Pour pouvoir faire un appel comme

 console.log ("Blah: " + JSON.stringify(object));
 

Ainsi, par exemple, alert("Blah! " + JSON.stringify({key: "value"})); génère une alerte avec le texte Blah! {"key":"value"}

6voto

Matt Ball Points 165937

Juste remplacer la méthode toString() .

Exemple simple:

 var x = {foo: 1, bar: true, baz: 'quux'};
x.toString(); // returns "[object Object]"
x.toString = function () {
    var s = [];
    for (var k in this) {
        if (this.hasOwnProperty(k)) s.push(k + ':' + this[k]);
    }
    return '{' + s.join() + '}';
};
x.toString(); // returns something more useful
 

C'est encore mieux quand vous définissez un nouveau type:

 function X()
{
    this.foo = 1;
    this.bar = true;
    this.baz = 'quux';
}

X.prototype.toString = /* same function as before */

new X().toString(); // returns "{foo:1,bar:true,baz:quux}"
 

0voto

5arx Points 3985

Pas correctement comme on pourrait aimer:

http://weblogs.asp.net/jgalloway/archive/2005/10/02/426345.aspx

-3voto

tomconte Points 723

Le journal de la console Chrome vous permet d'inspecter l'objet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X