Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Reference
  4. JavaScript error reference
  5. TypeError: setting getter-only property "x"

TypeError: setting getter-only property "x"

The JavaScriptstrict mode-only exception "setting getter-only property" occurs when there is an attempt to set a new value to a property for which only agetter is specified, or when setting aprivate accessor property that similarly only has a getter defined.

Message

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)

Error type

TypeError instrict mode only.

What went wrong?

There is an attempt to set a new value to a property for which only agetter is specified.While this will be silently ignored in non-strict mode, it will throw aTypeError instrict mode. Classes are always in strict mode, so assigning to a getter-only private element always throws this error.

Examples

Property with no setter

The example below shows how to set a getter for a property.It doesn't specify asetter, so aTypeError will be thrown upon trying to set thetemperatureproperty to30. For more details see also theObject.defineProperty() page.

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"

To fix this error, you will either need to remove thearc.temperature = 30 line, which attempts toset the temperature property, or you will need to implement asetter for it, forexample like this:

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 }]

See also

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp