aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/javascript/reference/global_objects/object/tosource/index.md
blob: b3dfd8cf7a9c26843a54141bd76c279212405e8a (plain)
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()")}}