1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
---
title: Object.prototype.toString()
slug: Web/JavaScript/Reference/Global_Objects/Object/toString
tags:
- JavaScript
- Méthode
- Object
- Prototype
- Reference
translation_of: Web/JavaScript/Reference/Global_Objects/Object/toString
original_slug: Web/JavaScript/Reference/Objets_globaux/Object/toString
---
{{JSRef}}
La méthode **`toString()`** renvoie une chaîne de caractères représentant l'objet.
{{EmbedInteractiveExample("pages/js/object-prototype-tostring.html")}}
## Syntaxe
obj.toString()
### Valeur de retour
Une chaîne de caractères représentant l'objet.
## 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 :
```js
var o = new Object();
o.toString(); // renvoie [object Object]
```
> **Note :** À partir de JavaScript 1.8.5 `toString()`, lorsqu'elle est appelée sur {{jsxref("null")}} renvoie `[object Null]`, et lorsqu'elle est appelée sur {{jsxref("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](#detect).
## 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` :
```js
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'{{jsxref("Object")}}) :
```js
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 :
```js
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 :
```js
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 {{jsxref("Function.prototype.call()")}} ou {{jsxref("Function.prototype.apply()")}} (pour éviter les versions surchargées).
```js
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 | État | Commentaires |
| -------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Définition initiale. Implémentée avec JavaScript 1.0. |
| {{SpecName('ES5.1', '#sec-15.2.4.2', 'Object.prototype.toString')}} | {{Spec2('ES5.1')}} | Lorsque la méthode est appelée sur {{jsxref("null")}}, elle renvoie `[object Null]`, et sur {{jsxref( "undefined")}} elle renvoie `[object Undefined]` |
| {{SpecName('ES6', '#sec-object.prototype.tostring', 'Object.prototype.toString')}} | {{Spec2('ES6')}} | |
| {{SpecName('ESDraft', '#sec-object.prototype.tostring', 'Object.prototype.toString')}} | {{Spec2('ESDraft')}} | |
## Compatibilité des navigateurs
{{Compat("javascript.builtins.Object.toString")}}
## Voir aussi
- {{jsxref("Object.prototype.toSource()")}}
- {{jsxref("Object.prototype.valueOf()")}}
- {{jsxref("Number.prototype.toString()")}}
- {{jsxref("Symbol.toPrimitive")}}
|