aboutsummaryrefslogtreecommitdiff
path: root/files/fr/conflicting/web/javascript/reference/global_objects/object/index.html
blob: 6eb405ace4c63b2cb6fd3da7f4de6ca39fe23fec (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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
---
title: Object.prototype
slug: Web/JavaScript/Reference/Objets_globaux/Object/prototype
tags:
  - JavaScript
  - Object
  - Propriété
  - Reference
translation_of: Web/JavaScript/Reference/Global_Objects/Object
translation_of_original: Web/JavaScript/Reference/Global_Objects/Object/prototype
---
<div>{{JSRef}}</div>

<p>La propriété <code><strong>Object.prototype</strong></code> représente le prototype de {{jsxref("Object")}}.</p>

<p>{{js_property_attributes(0, 0, 0)}}</p>

<h2 id="Description">Description</h2>

<p>La quasi-totalité des objets JavaScript descendent de {{jsxref("Object")}} ; un objet classique héritera donc des méthodes et propriétés de <code>Object.prototype</code>. Comme pour toutes les propriétés héritées, il est possible de surcharger ces propriétés. Par exemple, d'autres prototypes de constructeurs surchargent la propriété <code>constructor</code> et fournissent leur propre méthode {{jsxref("Object.prototype.toString()", "toString()")}}.</p>

<p>Cependant, on peut volontairement créer des objets qui ne descendent pas de {{jsxref("Object")}} (par exemple avec {{jsxref("Object.create", "Object.create(null)")}}) ou les modifier afin que ce ne soit plus le cas (par exemple avec la méthode {{jsxref("Object.setPrototypeOf()")}}).</p>

<p>Les modifications apportées aux propriétés du prototype d'<code>Object</code> impactent donc tous ces objets via la chaîne de prototypes, sauf si ces propriétés sont surchargées. Ce puissant mécanisme permet ainsi de modifier le comportement des objets ou d'y ajouter des fonctionnalités.</p>

<h2 id="Propriétés">Propriétés</h2>

<dl>
 <dt>{{jsxref("Object.prototype.constructor")}}</dt>
 <dd>Définit la fonction qui a créé le prototype d'un objet.</dd>
 <dt>{{jsxref("Object.prototype.proto","Object.prototype.__proto__")}} {{non-standard_inline}}</dt>
 <dd>Pointe vers l'objet qui a été utilisé comme prototype lors de l'instanciation de l'objet.</dd>
 <dt>{{jsxref("Object.prototype.noSuchMethod","Object.prototype.__noSuchMethod__")}} {{non-standard_inline}}</dt>
 <dd>Permet de définir une fonction qui sera exécutée lors d'une tentative d'accès à une méthode non-définie pour l'objet.</dd>
 <dt><s class="obsoleteElement">{{jsxref("Object.prototype.count","Object.prototype.__count__")}} {{obsolete_inline}}</s></dt>
 <dd><s class="obsoleteElement">UTilisée pour renvoyer le nombre de propriétés énumérables sur un objet défini par l'utilisateur. Cette propriété a été retirée.</s></dd>
 <dt><s class="obsoleteElement">{{jsxref("Object.prototype.parent","Object.prototype.__parent__")}} {{obsolete_inline}}</s></dt>
 <dd><s class="obsoleteElement">Utilisée pour faire référence au contexte de l'objet. Cette propriété a été retirée.</s></dd>
</dl>

<h2 id="Méthodes">Méthodes</h2>

<dl>
 <dt>{{jsxref("Object.prototype.defineGetter","Object.prototype.__defineGetter__()")}} {{non-standard_inline}} {{deprecated_inline}}</dt>
 <dd>Associe une fonction à une propriété qui, lorsqu'on y accède, exécute la fonction et renvoie la valeur de retour.</dd>
 <dt>{{jsxref("Object.prototype.defineSetter","Object.prototype.__defineSetter__()")}} {{non-standard_inline}} {{deprecated_inline}}</dt>
 <dd>Associe une fonction à une propriété qui, lorsqu'on la définit, exécute la fonction qui modifie la propriété.</dd>
 <dt>{{jsxref("Object.prototype.lookupGetter","Object.prototype.__lookupGetter__()")}} {{non-standard_inline}} {{deprecated_inline}}</dt>
 <dd>Renvoie la fonction associée à la propriété définie par la méthode {{jsxref("Object.defineGetter", "__defineGetter__")}}.</dd>
 <dt>{{jsxref("Object.prototype.lookupSetter()","Object.prototype.__lookupSetter__()")}} {{non-standard_inline}} {{deprecated_inline}}</dt>
 <dd>Renvoie la fonction associée avec la propriété définie par la méthode {{jsxref("Object.defineSetter", "__defineSetter__")}}.</dd>
 <dt>{{jsxref("Object.prototype.hasOwnProperty()")}}</dt>
 <dd>Renvoie un booléen qui indique si l'objet contient la propriété donnée comme une propriété propre (non héritée via la chaîne de prototypes).</dd>
 <dt>{{jsxref("Object.prototype.isPrototypeOf()")}}</dt>
 <dd>Renvoie un booléen qui indique si l'objet courant fait partie de la chaîne de prototype de l'objet passé en argument.</dd>
 <dt>{{jsxref("Object.prototype.propertyIsEnumerable()")}}</dt>
 <dd>Renvoie un booléen qui indique si l'<a href="/fr/docs/Web/JavaScript/Structures_de_données#Propriétés">attribut ECMAScript interne [[Enumerable]]</a> est défini.</dd>
 <dt>{{jsxref("Object.prototype.toSource()")}} {{non-standard_inline}}</dt>
 <dd>Renvoie une chaîne de caractères qui est un littéral objet représentant l'objet pour lequel la méthode a été appelée. La valeur de retour peut être utilisée pour créer un nouvel objet.</dd>
 <dt>{{jsxref("Object.prototype.toLocaleString()")}}</dt>
 <dd>Appelle la méthode {{jsxref("Object.toString", "toString()")}}.</dd>
 <dt>{{jsxref("Object.prototype.toString()")}}</dt>
 <dd>Renvoie une chaîne de caractères représentant l'objet.</dd>
 <dt>{{jsxref("Object.prototype.unwatch()")}} {{non-standard_inline}}</dt>
 <dd>Supprime un point d'arrêt conditionnel placé sur une propriété de l'objet.</dd>
 <dt>{{jsxref("Object.prototype.valueOf()")}}</dt>
 <dd>Renvoie la valeur primitive de l'objet.</dd>
 <dt>{{jsxref("Object.prototype.watch()")}} {{non-standard_inline}}</dt>
 <dd>Ajoute un point d'arrêt conditionnel sur une propriété de l'objet.</dd>
 <dt><s class="obsoleteElement">{{jsxref("Object.prototype.eval()")}} {{obsolete_inline}}</s></dt>
 <dd><s class="obsoleteElement">Utilisée pour évaluer une chaîne de caractères étant du code JavaScript dans le contexte de l'objet. Cette méthode a été retirée.</s></dd>
</dl>

<h2 id="Exemples">Exemples</h2>

<p>Javascript se base sur un modèle prototypal et non pas classique (au sens « modèle à base de classes »). Le prototype d'un objet est utilisé pour fournir de façon dynamique des propriétés aux objets qui héritent du prototype.</p>

<p>Par exemple :</p>

<pre class="brush: js">var Personne = function(nom) {
  this.name = nom;
  this.peutParler = true;
  this.salutation = function() {
    if (this.peutParler) {
      console.log('Bonjour, je suis ' + this.nom);
    }
  };
};

var Employe = function(nom, titre) {
  this.nom = nom;
  this.titre = titre;
  this.salutation = function() {
    if (this.peutParler) {
      console.log("Bonjour, je suis " + this.nom + ", le " + this.titre);
    }
  };
};
Employe.prototype = new Personne();

var Client = function(nom) {
  this.nom = nom;
};
Client.prototype = new Personne();

var Mime = function(nom) {
  this.nom = nom;
  this.peutParler = false;
};
Mime.prototype = new Personne();

var bob = new Employe('Bob', 'bricoleur');
var joe = new Client('Joe');
var rg = new Employe('Red Green', 'réparateur');
var mike = new Client('Mike');
var mime = new Mime('Mime');
bob.salutation();
// Bonjour, je suis Bob, le bricoleur

joe.salutation();
// Bonjour, je suis Joe

rg.salutation();
// Bonjour, je suis Red Green, le réparateur

mike.salutation();
// Bonjour, je suis Mike

mime.salutation();
</pre>

<h2 id="Spécifications">Spécifications</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">Spécification</th>
   <th scope="col">État</th>
   <th scope="col">Commentaires</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{SpecName('ES1')}}</td>
   <td>{{Spec2('ES1')}}</td>
   <td>Définition initiale. Implémentée avec JavaScript 1.0.</td>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-15.2.3.1', 'Object.prototype')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td></td>
  </tr>
  <tr>
   <td>{{SpecName('ES6', '#sec-object.prototype', 'Object.prototype')}}</td>
   <td>{{Spec2('ES6')}}</td>
   <td></td>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-object.prototype', 'Object.prototype')}}</td>
   <td>{{Spec2('ESDraft')}}</td>
   <td></td>
  </tr>
 </tbody>
</table>

<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2>

<div class="hidden">Le tableau de compatibilité de cette page a été généré à partir de données structurées. Si vous souhaitez contribuer à ces données, n'hésitez pas à consulter <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> et à nous envoyer une <em>pull request</em>.</div>

<p>{{Compat("javascript.builtins.Object.prototype")}}</p>

<h2 id="Voir_aussi">Voir aussi</h2>

<ul>
 <li><a href="/fr/docs/Web/JavaScript/Introduction_à_JavaScript_orienté_objet">Introduction à JavaScript orienté objet</a></li>
</ul>