Movatterモバイル変換


[0]ホーム

URL:


  1. 開発者向けのウェブ技術
  2. JavaScript
  3. JavaScript リファレンス
  4. JavaScript エラーリファレンス
  5. TypeError: setting getter-only property "x"

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。

View in EnglishAlways switch to English

TypeError: setting getter-only property "x"

JavaScript のstrict モード専用の例外 "setting getter-only property" は、ゲッターのみが定義されているプロパティに新しい値を設定しようとした時に発生します。

エラーメッセージ

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

エラーの種類

strict モードでのみ、TypeError

エラーの原因

ゲッターのみが定義されているプロパティに、新しい値を設定しようとしています。非 strict モードでは暗黙裡に無視されるだけですが、strict モードではTypeError が発生します。

セッターのないプロパティ

下記の例では、プロパティのゲッターの設定方法を示しています。セッターを指定していないため、temperature プロパティに30 を設定しようとすると、TypeError が発生します。詳細はObject.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 getter-only property "temperature"

このエラーを修正するには、 temperature プロパティに値を設定しようとしている 16 行目を取り除くか、次のようにセッターを実装します。

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

関連項目

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp