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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
---
title: Object.prototype.toSource()
slug: Web/JavaScript/Reference/Global_Objects/Object/toSource
tags:
- JavaScript
- Méthode
- Non-standard
- Object
- Prototype
- Reference
translation_of: Web/JavaScript/Reference/Global_Objects/Object/toSource
original_slug: Web/JavaScript/Reference/Objets_globaux/Object/toSource
---
{{JSRef}} {{non-standard_header}}
La méthode **`toSource()`** renvoie une chaîne de caractères représentant le code source d'un objet.
## Syntaxe
Object.toSource();
obj.toSource();
### Valeur de retour
Une chaîne de caractères qui représente le code source de l'objet.
## Description
La méthode `toSource()` renvoie les valeurs suivantes :
- Pour l'objet natif {{jsxref("Object")}}, `toSource()` renvoie la chaîne suivante, qui indique que le code source n'est pas disponible :
```js
function Object() {
[native code]
}
```
- Pour les instances de {{jsxref("Object")}}, `toSource()` renvoie une chaîne représentant le code source.
La méthode `toSource()` peut être utilisée à des fins de débogage pour analyser le contenu d'un objet.
### Surcharger la méthode `toSource()`
La méthode `toSource()` peut être surchargée pour les différents objets. Par exemple :
```js
function Personne(nom) {
this.nom = nom;
}
Personne.prototype.toSource = function Personne_toSource() {
return 'new Personne(' + uneval(this.nom) + ')';
};
console.log(new Personne('Jean').toSource()); // ---> new Personne("Jean")
```
### Les méthodes `toSource()` natives
Chaque constructeur natif JavaScript possède sa propre méthode `toSource()`. Ces objets sont :
- {{jsxref("Array.prototype.toSource()")}} {{non-standard_inline}} — pour {{jsxref("Array")}}.
- {{jsxref("Boolean.prototype.toSource()")}} {{non-standard_inline}} — pour {{jsxref("Boolean")}}.
- {{jsxref("Date.prototype.toSource()")}} {{non-standard_inline}} — pour {{jsxref("Date")}}.
- {{jsxref("Function.prototype.toSource()")}} {{non-standard_inline}} — pour {{jsxref("Function")}}.
- {{jsxref("Number.prototype.toSource()")}} {{non-standard_inline}} — pour {{jsxref("Number")}}.
- {{jsxref("RegExp.prototype.toSource()")}} {{non-standard_inline}} — pour {{jsxref("RegExp")}}.
- {{jsxref("String.prototype.toSource()")}} {{non-standard_inline}} — pour {{jsxref("String")}}.
- {{jsxref("Symbol.prototype.toSource()")}} {{non-standard_inline}} — pour {{jsxref("Symbol")}}.
- `Math.toSource()` — Renvoie "Math".
### Limites : les objets cycliques
Dans le cas d'objets qui font référence à eux-mêmes (une liste cyclique ou un arbre), `toSource()` ne représentera pas la référence (Firefox 24). Par exemple :
```js
var obj1 = {};
var obj2 = { a: obj1 };
obj1.b = obj2;
console.log('Cyclique : ' + (obj1.b.a == obj1));
var objSource = obj1.toSource(); // renvoie "({b:{a:{}}})"
obj1 = eval(objSource);
console.log('Cyclique : ' + (obj1.b.a == obj1));
```
Si on utilise une structure cyclique et qu'on a besoin de `toSource()`, il faudra surcharger la méthode `toSource()` pour avoir le comportement souhaité.
## Exemples
### Utiliser `toSource()`
Dans le code qui suit, on définit un objet `Chien` et on crée `monChien` qui est une instance 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 `toSource()` sur `monChien`, on obtiendra le littéral permettant de définir l'objet :
```js
monChien.toSource();
// returns ({nom:"Gabby", race:"Labrador", couleur:"chocolat", sexe:"femelle"})
```
## Spécifications
Cette méthode ne fait partie d'aucun standard, implémentée avec JavaScript 1.3.
## Compatibilité des navigateurs
{{Compat("javascript.builtins.Object.toSource")}}
## Voir aussi
- {{jsxref("Object.prototype.toString()")}}
|