diff options
| author | julieng <julien.gattelier@gmail.com> | 2021-08-03 08:03:23 +0200 |
|---|---|---|
| committer | SphinxKnight <SphinxKnight@users.noreply.github.com> | 2021-09-03 08:08:25 +0200 |
| commit | bf8e099b9c8b3c60d60b3712b4fc97b052c39887 (patch) | |
| tree | c101746d082c9581c94f5937519c7d0e2f4af8cb /files/fr/web/javascript/reference/operators/super | |
| parent | 844f5103992238c0c23203286dad16a466e89c97 (diff) | |
| download | translated-content-bf8e099b9c8b3c60d60b3712b4fc97b052c39887.tar.gz translated-content-bf8e099b9c8b3c60d60b3712b4fc97b052c39887.tar.bz2 translated-content-bf8e099b9c8b3c60d60b3712b4fc97b052c39887.zip | |
convert content to md
Diffstat (limited to 'files/fr/web/javascript/reference/operators/super')
| -rw-r--r-- | files/fr/web/javascript/reference/operators/super/index.md | 81 |
1 files changed, 43 insertions, 38 deletions
diff --git a/files/fr/web/javascript/reference/operators/super/index.md b/files/fr/web/javascript/reference/operators/super/index.md index 372dfcd497..98f1ced4b5 100644 --- a/files/fr/web/javascript/reference/operators/super/index.md +++ b/files/fr/web/javascript/reference/operators/super/index.md @@ -12,29 +12,31 @@ translation_of: Web/JavaScript/Reference/Operators/super original_slug: Web/JavaScript/Reference/Opérateurs/super browser-compat: javascript.operators.super --- -<div>{{jsSidebar("Operators")}}</div> +{{jsSidebar("Operators")}} -<p>Le mot-clé <code><strong>super</strong></code> est utilisé afin d'appeler ou d'accéder à des fonctions définies sur l'objet parent.</p> +Le mot-clé **`super`** est utilisé afin d'appeler ou d'accéder à des fonctions définies sur l'objet parent. -<p>Les expressions de la forme <code>super.propriete</code> et <code>super[expr]</code> sont valides pour n'importe quelle <a href="/fr/docs/Web/JavaScript/Reference/Functions/Method_definitions">définition de méthode</a>, que ce soit au sein d'une <a href="/fr/docs/Web/JavaScript/Reference/Classes">classe</a> ou d'un <a href="/fr/docs/Web/JavaScript/Reference/Operators/Object_initializer">littéral objet</a>.</p> +Les expressions de la forme `super.propriete` et `super[expr]` sont valides pour n'importe quelle [définition de méthode](/fr/docs/Web/JavaScript/Reference/Functions/Method_definitions), que ce soit au sein d'une [classe](/fr/docs/Web/JavaScript/Reference/Classes) ou d'un [littéral objet](/fr/docs/Web/JavaScript/Reference/Operators/Object_initializer). -<h2 id="syntax">Syntaxe</h2> +## Syntaxe -<pre class="brush: js">super([arguments]); // Le constructeur parent est appelé +```js +super([arguments]); // Le constructeur parent est appelé super.functionOnParent([arguments]); -</pre> +``` -<h2 id="description">Description</h2> +## Description -<p>Lorsqu'il est utilisé dans un constructeur, le mot-clé <code>super</code> est utilisé seul et doit apparaître avant le mot-clé <code>this</code>. Ce mot-clé peut également être utilisé afin d'appeler des fonctions sur un objet parent.</p> +Lorsqu'il est utilisé dans un constructeur, le mot-clé `super` est utilisé seul et doit apparaître avant le mot-clé `this`. Ce mot-clé peut également être utilisé afin d'appeler des fonctions sur un objet parent. -<h2 id="examples">Exemples</h2> +## Exemples -<h3 id="using_super_in_classes">Utiliser <code>super</code> avec les classes</h3> +### Utiliser `super` avec les classes -<p>Ce fragment de code est tiré de <a href="https://github.com/GoogleChrome/samples/blob/gh-pages/classes-es6/index.html">cet exemple</a>. Ici on utilise <code>super()</code> afin d'éviter la duplication des parties communes entre le constructeur de <code>Rectangle</code> et de <code>Carre</code>.</p> +Ce fragment de code est tiré de [cet exemple](https://github.com/GoogleChrome/samples/blob/gh-pages/classes-es6/index.html). Ici on utilise `super()` afin d'éviter la duplication des parties communes entre le constructeur de `Rectangle` et de `Carre`. -<pre class="brush: js">class Rectangle { +```js +class Rectangle { constructor(hauteur, largeur) { this.name = 'Rectangle'; this.hauteur = hauteur; @@ -64,13 +66,15 @@ class Carre extends Rectangle { // exception ReferenceError. this.name = 'Carré'; } -}</pre> +} +``` -<h3 id="super-calling_static_methods">Utiliser super pour appeler des méthodes statiques</h3> +### Utiliser super pour appeler des méthodes statiques -<p>Il est possible d'utiliser super pour invoquer des méthodes <a href="/fr/docs/Web/JavaScript/Reference/Classes/static">statiques</a> :</p> +Il est possible d'utiliser super pour invoquer des méthodes [statiques](/fr/docs/Web/JavaScript/Reference/Classes/static) : -<pre class="brush: js">class Rectangle { +```js +class Rectangle { constructor() {} static logNbCotes() { return "J'ai 4 côtés"; @@ -84,13 +88,14 @@ class Carre extends Rectangle { } } Carre.logDescription(); // "J'ai 4 côtés qui sont tous égaux" -</pre> +``` -<h3 id="deleting_super_properties_will_throw_an_error">Supprimer des propriétés parentes lèvera une exception</h3> +### Supprimer des propriétés parentes lèvera une exception -<p>Il n'est pas possible d'utiliser l'opérateur <code><a href="/fr/docs/Web/JavaScript/Reference/Operators/delete">delete</a></code> sur <code>super.prop</code> ou <code>super[expr]</code> pour supprimer une propriété de la classe parente, cela renverra une exception <a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError"><code>ReferenceError</code></a> :</p> +Il n'est pas possible d'utiliser l'opérateur [`delete`](/fr/docs/Web/JavaScript/Reference/Operators/delete) sur `super.prop` ou `super[expr]` pour supprimer une propriété de la classe parente, cela renverra une exception [`ReferenceError`](/fr/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) : -<pre class="brush: js">class Base { +```js +class Base { toto() {} } @@ -101,13 +106,15 @@ class Derivee extends Base { } new Derivee().delete(); -// ReferenceError : suppression invalide avec 'super'</pre> +// ReferenceError : suppression invalide avec 'super' +``` -<h3 id="super.prop_cannot_overwrite_non-writable_properties"><code>super.prop</code> ne peut pas surcharger les propriétés non modifiables</h3> +### `super.prop` ne peut pas surcharger les propriétés non modifiables -<p>Lorsque des propriétés sont définies sans accès en écriture (<em>non-writable</em>), par exemple avec <a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty"><code>Object.defineProperty()</code></a>, <code>super</code> ne peut pas surcharger les valeurs de ces propriétés.</p> +Lorsque des propriétés sont définies sans accès en écriture (_non-writable_), par exemple avec [`Object.defineProperty()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty), `super` ne peut pas surcharger les valeurs de ces propriétés. -<pre class="brush: js">class X { +```js +class X { constructor() { Object.defineProperty(this, "prop", { configurable: true, @@ -127,14 +134,14 @@ class Y extends X { const y = new Y(); y.toto(); // TypeError "prop" est en lecture seule console.log(y.prop); // 1 -</pre> +``` -<h3 id="Utiliser_super.prop_sur_les_littéraux_objets">Utiliser <code>super.prop</code> sur les littéraux objets</h3> +### Utiliser `super.prop` sur les littéraux objets -<p><code>super</code> peut également être utilisé avec <a - href="/fr/docs/Web/JavaScript/Reference/Operators/Object_initializer">la notation littérale</a>. Dans l'exemple qui suit, deux objets définissent chacun une méthode. Le deuxième objet utilise <code>super</code> pour appeler la méthode du premier objet. Cela fonctionne grâce à <a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf"><code>Object.setPrototypeOf()</code></a> avec lequel on définit que le prototype de <code>obj2</code> est <code>obj1</code>. De cette façon, super peut parcourir la chaîne de prototypes et trouver <code>methode1</code> dans <code>obj1</code>.</p> +`super` peut également être utilisé avec [la notation littérale](/fr/docs/Web/JavaScript/Reference/Operators/Object_initializer). Dans l'exemple qui suit, deux objets définissent chacun une méthode. Le deuxième objet utilise `super` pour appeler la méthode du premier objet. Cela fonctionne grâce à [`Object.setPrototypeOf()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf) avec lequel on définit que le prototype de `obj2` est `obj1`. De cette façon, super peut parcourir la chaîne de prototypes et trouver `methode1` dans `obj1`. -<pre class="brush: js">const obj1 = { +```js +const obj1 = { methode1() { console.log("méthode 1"); } @@ -148,18 +155,16 @@ const obj2 = { Object.setPrototypeOf(obj2, obj1); obj2.methode2(); // affiche "méthode 1" dans la console -</pre> +``` -<h2 id="specifications">Spécifications</h2> +## Spécifications -<p>{{Specifications}}</p> +{{Specifications}} -<h2 id="browser_compatibility">Compatibilité des navigateurs</h2> +## Compatibilité des navigateurs -<p>{{Compat}}</p> +{{Compat}} -<h2 id="see_also">Voir aussi</h2> +## Voir aussi -<ul> - <li><a href="/fr/docs/Web/JavaScript/Reference/Classes">Les classes</a></li> -</ul> +- [Les classes](/fr/docs/Web/JavaScript/Reference/Classes) |
