Object.prototype.toString()

Résumé

La méthode toString() renvoie une chaîne de caractères représentant l'objet.

Syntaxe

obj.toString()

Description

Chaque object possède une méthode toString() qui est appelée de façon automatique à chaque fois que l'objet doit être représenté sous forme de texte ou à chaque fois qu'on utilise un objet et que la valeur attendue est une chaîne de caractères. Par défaut, chaque objet qui descend d'Object hérite de la méthode toString(). Si cette méthode n'est pas surchargée, toString() renvoie "[object type]", où type est le type de l'objet. Par exemple :

var o = new Object();
o.toString();           // renvoie [object Object]

Note : À partir de JavaScript 1.8.5 toString(), lorsqu'elle est appelée sur null renvoie [object Null], et lorsqu'elle est appelée sur undefined renvoie [object Undefined], ce qui est conforme à ECMAScript 5 et aux errata qui ont suivis. Voir l'exemple ci-après Utiliser toString pour détecter le type d'un objet.

Exemples

Surcharger la méthode toString par défaut

Il est possible de surcharger la méthode toString(). La méthode toString() ne prend pas d'argument et doit renvoyer une chaîne de caractères. La méthode toString() peut renvoyer n'importe quelle valeur mais elle sera plus pertinente si elle renvoie des informations sur l'objet courant.

Le code qui suit définit un type d'objet Chien et instancie monChien, qui est de type Chien :

function Chien(nom, race, couleur, sexe) {
  this.nom = nom;
  this.race = race;
  this.couleur = couleur;
  this.sexe = sexe;
}

monChien = new Chien('Gabby', 'Labrador', 'chocolat', 'femelle');

Si on appelle la méthode toString() sur cet objet, on aura le résultat suivant (provenant de la méthode originale, héritée d'Object) :

monChien.toString(); // renvoie [object Object]

Dans le code qui suit, on surcharge la méthode toString() avec chienToString(). Cette méthode produit une chaîne qui contient l'ensemble des propriétés (race, couleur, sexe, nom) de l'objet :

Chien.prototype.toString = function chienToString() {
  var ret = 'Le chien ' + this.nom + ' est un ' + this.race + ' ' + this.sexe + ' ' + this.couleur;
  return ret;
}

En utilisant la fonction ci-avant, à chaque fois que monChien sera utilisé là où on attend une chaîne, le moteur JavaScript appellera automatique la fonction chienToString()qui renverra la chaîne suivante :

Le chien Gabby est un labrador femelle chocolat.

Utiliser toString() pour détecter le type d'un objet

toString() peut être utilisée pour tous les objets afin d'obtenir son type. Pour utiliser Object.prototype.toString() avec n'importe quel objet, il sera nécessaire d'appeler Function.prototype.call() ou Function.prototype.apply() (pour éviter les versions surchargées).

var toString = Object.prototype.toString;

toString.call(new Date);    // [object Date]
toString.call(new String);  // [object String]
toString.call(Math);        // [object Math]

// Depuis JavaScript 1.8.5
toString.call(undefined);   // [object Undefined]
toString.call(null);        // [object Null]

Spécifications

Spécification Statut Commentaires
Première édition d'ECMAScript. Standard Définition initiale. Implémentée avec JavaScript 1.0.
ECMAScript 5.1 (ECMA-262)
La définition de 'Object.prototype.toString' dans cette spécification.
Standard Lorsque la méthode est appelée sur null, elle renvoie [object Null], et sur undefined elle renvoie [object Undefined]
ECMAScript 6 (ECMA-262)
La définition de 'Object.prototype.toString' dans cette spécification.
Draft  

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple (Oui) (Oui) (Oui) (Oui) (Oui)
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, teoli, tregagnon, Mgjbot, BenoitL
Dernière mise à jour par : SphinxKnight,