Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. JavaScript-Fehlerreferenz
  5. TypeError: setting getter-only property "x"

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

TypeError: setting getter-only property "x"

Die instrict mode vorkommende JavaScript-Ausnahme "setting getter-only property" tritt auf, wenn versucht wird, einem Eigenschaftswert einen neuen Wert zuzuweisen, für den nur eingetter definiert ist, oder wenn eineprivate accessor-Eigenschaft gesetzt wird, die ebenfalls nur einen Getter hat.

Nachricht

TypeError: Cannot set property x of #<Object> which has only a getter (V8-based)TypeError: '#x' was defined without a setter (V8-based)TypeError: setting getter-only property "x" (Firefox)TypeError: Attempted to assign to readonly property. (Safari)TypeError: Trying to access an undefined private setter (Safari)

Fehlerart

TypeError instrict mode nur.

Was ist schiefgelaufen?

Es wird versucht, einer Eigenschaft, für die nur eingetter definiert ist, einen neuen Wert zuzuweisen. Während dies im nicht-strengen Modus stillschweigend ignoriert wird, löst es imstrict mode einenTypeError aus. Klassen sind immer im strengen Modus, daher löst die Zuweisung zu einem rein lesenden privaten Element immer diesen Fehler aus.

Beispiele

Eigenschaft ohne Setter

Das folgende Beispiel zeigt, wie ein Getter für eine Eigenschaft gesetzt wird. Es wird keinsetter definiert, daher wird einTypeError ausgelöst, wenn versucht wird, dietemperature-Eigenschaft auf30 zu setzen. Für weitere Details siehe auch die SeiteObject.defineProperty().

js
"use strict";function Archiver() {  const temperature = null;  Object.defineProperty(this, "temperature", {    get() {      console.log("get!");      return temperature;    },  });}const arc = new Archiver();arc.temperature; // 'get!'arc.temperature = 30;// TypeError: setting getter-only property "temperature"

Um diesen Fehler zu beheben, müssen Sie entweder die Zeilearc.temperature = 30, die versucht, die temperature-Eigenschaft zu setzen, entfernen oder einensetter dafür implementieren, zum Beispiel so:

js
"use strict";function Archiver() {  let temperature = null;  const archive = [];  Object.defineProperty(this, "temperature", {    get() {      console.log("get!");      return temperature;    },    set(value) {      temperature = value;      archive.push({ val: temperature });    },  });  this.getArchive = function () {    return archive;  };}const arc = new Archiver();arc.temperature; // 'get!'arc.temperature = 11;arc.temperature = 13;arc.getArchive(); // [{ val: 11 }, { val: 13 }]

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp