You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/08-prototypes/03-native-prototypes/article.md
+14-16Lines changed: 14 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,28 +6,28 @@ Nous verrons d’abord les détails, puis comment l’utiliser pour ajouter de n
6
6
7
7
## Object.prototype
8
8
9
-
Disons que nous produisons un objet vide:
9
+
Disons que nous produisons un objet vide:
10
10
11
11
```js run
12
12
let obj = {};
13
13
alert( obj ); // "[object Object]" ?
14
14
```
15
15
16
-
Où est le code qui génère la chaîne `"[object Object]"`? C'est une méthode `toString` intégrée, mais où est-elle? Le`obj` est vide!
16
+
Où est le code qui génère la chaîne `"[object Object]"`? C'est une méthode `toString` intégrée, mais où est-elle ? L'objet`obj` est vide!
17
17
18
18
...Mais la notation abrégée `obj = {}` est identique à `obj = new Object()`, où `Object` est une fonction constructeur de l'objet intégrée, avec son propre `prototype` référençant un énorme objet avec `toString` et d'autres méthodes.
19
19
20
-
Voici ce qui se passe:
20
+
Voici ce qui se passe:
21
21
22
22

23
23
24
-
Lorsque `new Object()` est appelé (ou un objet littéral `{...}` est créé), le `[[Prototype]]` de celui-ci est défini sur `Object.prototype` conformément à la règle dont nous avons parlé dans le chapitre précédent:
24
+
Lorsque `new Object()` est appelé (ou un objet littéral `{...}` est créé), le `[[Prototype]]` de celui-ci est défini sur `Object.prototype` conformément à la règle dont nous avons parlé dans le chapitre précédent:
25
25
26
26

27
27
28
28
Ainsi, quand on appelle `obj.toString()`, la méthode est extraite de `Object.prototype`.
Certaines méthodes dans les prototypes peuvent se chevaucher, par exemple, `Array.prototype` a son propre `toString` qui répertorie les éléments délimités par des virgules:
74
+
Certaines méthodes dans les prototypes peuvent se chevaucher, par exemple, `Array.prototype` a son propre `toString` qui répertorie les éléments délimités par des virgules:
75
75
76
76
```js run
77
77
let arr = [1, 2, 3]
@@ -80,11 +80,9 @@ alert(arr); // 1,2,3 <-- le résultat de Array.prototype.toString
80
80
81
81
Comme nous l'avons vu précédemment, `Object.prototype` a aussi `toString`, mais `Array.prototype` est plus proche dans la chaîne, la variante de tableau est donc utilisée.
82
82
83
-
84
83

85
84
86
-
87
-
Les outils intégrés au navigateur, tels que la console de développement Chrome, affichent également l'héritage (il faut éventuellement utiliser `console.dir` pour les objets intégrés):
85
+
Les outils intégrés au navigateur, tels que la console de développement Chrome, affichent également l'héritage (il faut éventuellement utiliser `console.dir` pour les objets intégrés) :
Une chose complexe se produit avec les chaînes, les nombres et les booléens.
103
101
104
-
Comme on s'en souvient, ce ne sont pas des objets. Mais si nous essayons d'accéder à leurs propriétés, des objets wrapper temporaires sont créés à l'aide des constructeurs intégrés `String`,`Number` et `Boolean`, ils fournissent les méthodes et disparaissent.
102
+
Comme on s'en souvient, ce ne sont pas des objets. Mais si nous essayons d'accéder à leurs propriétés, des objets wrapper temporaires sont créés à l'aide des constructeurs intégrés `String`,`Number` et `Boolean`, ils fournissent les méthodes et disparaissent.
105
103
106
104
Ces objets sont créés de manière invisible pour nous et la plupart des moteurs les optimisent, mais la spécification le décrit exactement de cette façon. Les méthodes de ces objets résident également dans des prototypes, disponibles sous les noms `String.prototype`, `Number.prototype` et `Boolean.prototype`.
107
105
@@ -111,7 +109,7 @@ Les valeurs spéciales `null` et `undefined` se démarquent. Elles n'ont pas de
111
109
112
110
## Modification des prototypes natifs [#native-prototype-change]
113
111
114
-
Les prototypes natifs peuvent être modifiés. Par exemple, si nous ajoutons une méthode à `String.prototype`, elle devient disponible pour toutes les chaînes:
112
+
Les prototypes natifs peuvent être modifiés. Par exemple, si nous ajoutons une méthode à `String.prototype`, elle devient disponible pour toutes les chaînes:
0 commit comments