diff options
| author | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2021-09-04 00:46:12 +0900 |
|---|---|---|
| committer | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2021-09-04 00:46:12 +0900 |
| commit | fe6f6abf2b7c497bf1f97f73a82dde7cf48eb79f (patch) | |
| tree | 51b7edfc370236684a203f4e69ae67bb7d24b549 /files/fr/web/javascript/reference/errors/getter_only | |
| parent | 04ea4edc83cc12142ed151bbea2c65cffc8e76f6 (diff) | |
| parent | eeb07fe338cdc90092841d717919f46f9d9e3ff9 (diff) | |
| download | translated-content-fe6f6abf2b7c497bf1f97f73a82dde7cf48eb79f.tar.gz translated-content-fe6f6abf2b7c497bf1f97f73a82dde7cf48eb79f.tar.bz2 translated-content-fe6f6abf2b7c497bf1f97f73a82dde7cf48eb79f.zip | |
Merge branch 'main' into 20210818-Glossary/Type
Diffstat (limited to 'files/fr/web/javascript/reference/errors/getter_only')
| -rw-r--r-- | files/fr/web/javascript/reference/errors/getter_only/index.html | 85 | ||||
| -rw-r--r-- | files/fr/web/javascript/reference/errors/getter_only/index.md | 85 |
2 files changed, 85 insertions, 85 deletions
diff --git a/files/fr/web/javascript/reference/errors/getter_only/index.html b/files/fr/web/javascript/reference/errors/getter_only/index.html deleted file mode 100644 index 01fd2c0e14..0000000000 --- a/files/fr/web/javascript/reference/errors/getter_only/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: 'TypeError: setting a property that has only a getter' -slug: Web/JavaScript/Reference/Errors/Getter_only -tags: - - Erreurs - - JavaScript - - Mode strict - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Getter_only -original_slug: Web/JavaScript/Reference/Erreurs/Getter_only ---- -<div>{{jsSidebar("Errors")}}</div> - -<h2 id="Message">Message</h2> - -<pre class="syntaxbox">TypeError: Assignment to read-only properties is not allowed in strict mode (Edge) -TypeError: setting getter-only property "x" (Firefox) -TypeError: Cannot set property "prop" of #<Object> which has only a getter (Chrome) -</pre> - -<h2 id="Type_d'erreur">Type d'erreur</h2> - -<p>{{jsxref("TypeError")}}, uniquement en <a href="/en-US/docs/Web/JavaScript/Reference/Strict_mode">mode strict</a>.</p> - -<h2 id="Quel_est_le_problème">Quel est le problème ?</h2> - -<p>On essaie de fournir une nouvelle valeur pour une propriété qui ne dispose que d'un <a href="/fr/docs/Web/JavaScript/Reference/Fonctions/get">accesseur</a>. Ceci échouera en mode non-strict mais lèvera une exception {{jsxref("TypeError")}} en <a href="/fr/docs/Web/JavaScript/Reference/Strict_mode">mode strict</a>.</p> - -<h2 id="Exemples">Exemples</h2> - -<p>Dans l'exemple qui suit, on voit comment créer un accesseur sur une propriété. En revanche, dans la définition de l'objet, on n'inclut aucun <a href="/fr/docs/Web/JavaScript/Reference/Fonctions/set">mutateur</a> et une exception <code>TypeError</code> sera déclenchée lorsqu'on voudra modifier la propriété <code>temperature</code> pour la passer à <code>30</code>. Pour plus de détails, on pourra consulter la page {{jsxref("Object.defineProperty()")}}.</p> - -<pre class="brush: js example-bad">"use strict"; - -function Archiver() { - var temperature = null; - Object.defineProperty(this, 'temperature', { - get: function() { - console.log('get!'); - return temperature; - } - }); -} - -var arc = new Archiver(); -arc.temperature; // 'get!' - -arc.temperature = 30; -// TypeError: setting a property that has only a getter -</pre> - -<p>Pour corriger cette erreur, soit on retire la ligne 16 (où on tente de modifier la propriété) soit on implémente un mutateur, comme ceci :</p> - -<pre class="brush: js example-good highlight[12]">"use strict"; - -function Archiver() { - var temperature = null; - var archive = []; - - Object.defineProperty(this, 'temperature', { - get: function() { - console.log('get!'); - return temperature; - }, - set: function(value) { - temperature = value; - archive.push({ val: temperature }); - } - }); - - this.getArchive = function() { return archive; }; -} - -var arc = new Archiver(); -arc.temperature; // 'get!' -arc.temperature = 11; -arc.temperature = 13; -arc.getArchive(); // [{ val: 11 }, { val: 13 }]</pre> - -<h2 id="Voir_aussi">Voir aussi</h2> - -<ul> - <li>{{jsxref("Object.defineProperty()")}}</li> - <li>{{jsxref("Object.defineProperties()")}}</li> -</ul> diff --git a/files/fr/web/javascript/reference/errors/getter_only/index.md b/files/fr/web/javascript/reference/errors/getter_only/index.md new file mode 100644 index 0000000000..d308e5b583 --- /dev/null +++ b/files/fr/web/javascript/reference/errors/getter_only/index.md @@ -0,0 +1,85 @@ +--- +title: 'TypeError: setting a property that has only a getter' +slug: Web/JavaScript/Reference/Errors/Getter_only +tags: + - Erreurs + - JavaScript + - Mode strict + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Getter_only +original_slug: Web/JavaScript/Reference/Erreurs/Getter_only +--- +{{jsSidebar("Errors")}} + +## Message + + TypeError: Assignment to read-only properties is not allowed in strict mode (Edge) + TypeError: setting getter-only property "x" (Firefox) + TypeError: Cannot set property "prop" of #<Object> which has only a getter (Chrome) + +## Type d'erreur + +{{jsxref("TypeError")}}, uniquement en [mode strict](/en-US/docs/Web/JavaScript/Reference/Strict_mode). + +## Quel est le problème ? + +On essaie de fournir une nouvelle valeur pour une propriété qui ne dispose que d'un [accesseur](/fr/docs/Web/JavaScript/Reference/Fonctions/get). Ceci échouera en mode non-strict mais lèvera une exception {{jsxref("TypeError")}} en [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). + +## Exemples + +Dans l'exemple qui suit, on voit comment créer un accesseur sur une propriété. En revanche, dans la définition de l'objet, on n'inclut aucun [mutateur](/fr/docs/Web/JavaScript/Reference/Fonctions/set) et une exception `TypeError` sera déclenchée lorsqu'on voudra modifier la propriété `temperature` pour la passer à `30`. Pour plus de détails, on pourra consulter la page {{jsxref("Object.defineProperty()")}}. + +```js example-bad +"use strict"; + +function Archiver() { + var temperature = null; + Object.defineProperty(this, 'temperature', { + get: function() { + console.log('get!'); + return temperature; + } + }); +} + +var arc = new Archiver(); +arc.temperature; // 'get!' + +arc.temperature = 30; +// TypeError: setting a property that has only a getter +``` + +Pour corriger cette erreur, soit on retire la ligne 16 (où on tente de modifier la propriété) soit on implémente un mutateur, comme ceci : + +```js example-good +"use strict"; + +function Archiver() { + var temperature = null; + var archive = []; + + Object.defineProperty(this, 'temperature', { + get: function() { + console.log('get!'); + return temperature; + }, + set: function(value) { + temperature = value; + archive.push({ val: temperature }); + } + }); + + this.getArchive = function() { return archive; }; +} + +var arc = new Archiver(); +arc.temperature; // 'get!' +arc.temperature = 11; +arc.temperature = 13; +arc.getArchive(); // [{ val: 11 }, { val: 13 }] +``` + +## Voir aussi + +- {{jsxref("Object.defineProperty()")}} +- {{jsxref("Object.defineProperties()")}} |
