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/09-classes/03-static-properties-methods/3-class-extend-object/solution.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@ Voyons d'abord pourquoi ce dernier code ne fonctionne pas.
2
2
3
3
La raison devient évidente si nous essayons de l'exécuter. Un constructeur de classe héritant doit appeler `super()`. Sinon `"this"` ne sera pas "défini".
4
4
5
-
Alors, voici la solution:
5
+
Alors, voici la solution:
6
6
7
7
```js run
8
8
classRabbitextendsObject {
@@ -23,12 +23,12 @@ Mais ce n'est pas tout.
23
23
24
24
Même après le correctif, il existe toujours une différence importante entre `"class Rabbit extends Object"` et `class Rabbit`.
25
25
26
-
Comme on le sait, la syntaxe "extend" configure deux prototypes:
26
+
Comme on le sait, la syntaxe "extends" configure deux prototypes:
27
27
28
28
1. Entre le `"prototype"` des fonctions du constructeur (pour les méthodes).
29
-
2. Entre les fonctions du constructeur elles-mêmes (pour les méthodes statiques).
29
+
2. Entre les fonctions constructeur elles-mêmes (pour les méthodes statiques).
30
30
31
-
Dans notre cas, pour `class Rabbit extends Object`, cela signifie:
31
+
Dans notre cas, pour `class Rabbit extends Object`, cela signifie:
Mais si nous n’avons pas `extends Object`, alors `Rabbit.__proto__` n'est pas défini sur `Object`.
52
52
53
-
Voici la démo:
53
+
Voici la démo:
54
54
55
55
```js run
56
56
classRabbit {}
@@ -69,11 +69,11 @@ Donc, `Rabbit` ne donne pas accès aux méthodes statiques de `Object` dans ce c
69
69
70
70
En passant, `Function.prototype` a des méthodes de fonction "génériques", comme `call`, `bind`, etc. Elles sont finalement disponibles dans les deux cas, car pour le constructeur `Object` intégré, `Object.__proto__ === Function.prototype`.
0 commit comments