Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence JavaScript
  4. Référence des erreurs JavaScript
  5. TypeError: setting a property that has only a getter

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

TypeError: setting a property that has only a getter

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

TypeError, uniquement enmode strict.

Quel est le problème ?

On essaie de fournir une nouvelle valeur pour une propriété qui ne dispose que d'unaccesseur. Ceci échouera en mode non-strict mais lèvera une exceptionTypeError enmode strict.

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 aucunmutateur et une exceptionTypeError 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 pageObject.defineProperty().

js
"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
"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

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp