Skip to content

Commit abbd2ac

Browse files
Apply minor fixes in '1-js/08-prototypes/03-native-prototypes/article.md'
1 parent 74ab172 commit abbd2ac

File tree

1 file changed

+14
-16
lines changed

1 file changed

+14
-16
lines changed

1-js/08-prototypes/03-native-prototypes/article.md

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,28 @@ Nous verrons d’abord les détails, puis comment l’utiliser pour ajouter de n
66

77
## Object.prototype
88

9-
Disons que nous produisons un objet vide:
9+
Disons que nous produisons un objet vide :
1010

1111
```js run
1212
let obj = {};
1313
alert( obj ); // "[object Object]" ?
1414
```
1515

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 !
1717

1818
...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.
1919

20-
Voici ce qui se passe:
20+
Voici ce qui se passe :
2121

2222
![](object-prototype.svg)
2323

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 :
2525

2626
![](object-prototype-1.svg)
2727

2828
Ainsi, quand on appelle `obj.toString()`, la méthode est extraite de `Object.prototype`.
2929

30-
Nous pouvons le vérifier comme ceci:
30+
Nous pouvons le vérifier comme ceci :
3131

3232
```js run
3333
let obj = {};
@@ -38,7 +38,7 @@ alert(obj.toString === obj.__proto__.toString); //true
3838
alert(obj.toString === Object.prototype.toString); //true
3939
```
4040

41-
Veuillez noter qu'il n'y a plus de `[[Prototype]]` dans la chaîne au dessus de `Object.prototype`:
41+
Veuillez noter qu'il n'y a plus de `[[Prototype]]` dans la chaîne au dessus de `Object.prototype` :
4242

4343
```js run
4444
alert(Object.prototype.__proto__); // null
@@ -52,26 +52,26 @@ Par exemple, lorsque nous créons un tableau `[1, 2, 3]`, le constructeur `new A
5252

5353
Par spécification, tous les prototypes intégrés ont `Object.prototype` en haut. C'est pourquoi certaines personnes disent que "tout hérite d'objets".
5454

55-
Voici la vue d'ensemble:
55+
Voici la vue d'ensemble :
5656

5757
![](native-prototypes-classes.svg)
5858

59-
Vérifions les prototypes manuellement:
59+
Vérifions les prototypes manuellement :
6060

6161
```js run
6262
let arr = [1, 2, 3];
6363

64-
// il hérite de Array.prototype?
64+
// il hérite de Array.prototype ?
6565
alert( arr.__proto__ === Array.prototype ); // true
6666

67-
// puis de Object.prototype?
67+
// puis de Object.prototype ?
6868
alert( arr.__proto__.__proto__ === Object.prototype ); // true
6969

7070
// et null tout en haut.
7171
alert( arr.__proto__.__proto__.__proto__ ); // null
7272
```
7373

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:
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 :
7575

7676
```js run
7777
let arr = [1, 2, 3]
@@ -80,11 +80,9 @@ alert(arr); // 1,2,3 <-- le résultat de Array.prototype.toString
8080

8181
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.
8282

83-
8483
![](native-prototypes-array-tostring.svg)
8584

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) :
8886

8987
![](console_dir_array.png)
9088

@@ -101,7 +99,7 @@ alert(f.__proto__.__proto__ == Object.prototype); // true, hérite d'objets
10199

102100
Une chose complexe se produit avec les chaînes, les nombres et les booléens.
103101

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.
105103

106104
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`.
107105

@@ -111,7 +109,7 @@ Les valeurs spéciales `null` et `undefined` se démarquent. Elles n'ont pas de
111109
112110
## Modification des prototypes natifs [#native-prototype-change]
113111
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 :
115113
116114
```js run
117115
String.prototype.show = function() {

0 commit comments

Comments
 (0)