From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../reference/errors/getter_only/index.html | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 files/ru/web/javascript/reference/errors/getter_only/index.html (limited to 'files/ru/web/javascript/reference/errors/getter_only') diff --git a/files/ru/web/javascript/reference/errors/getter_only/index.html b/files/ru/web/javascript/reference/errors/getter_only/index.html new file mode 100644 index 0000000000..9dc64f048f --- /dev/null +++ b/files/ru/web/javascript/reference/errors/getter_only/index.html @@ -0,0 +1,81 @@ +--- +title: >- + TypeError: setting getter-only property "x"(установка свойства только для + геттера "x") +slug: Web/JavaScript/Reference/Errors/Getter_only +translation_of: Web/JavaScript/Reference/Errors/Getter_only +--- +
{{jsSidebar("Errors")}}
+ +

Сообщения

+ +
TypeError: назначение свойств только для чтения не допускается в строгом режиме (Edge)
+TypeError: установка свойства только для геттера "x" (Firefox)
+TypeError: не удается установить свойство "prop" из #<Object>, который имеет только геттер (Chrome)
+
+
+ +

Тип ошибки

+ +

{{jsxref("TypeError")}} только в строгом режиме.

+ +

Что пошло не так?

+ +

Предпринята попытка задать новое значение свойству, для которого указан только геттер. . Пока это молча будет проигнорировано в non-strict режиме, оно бросит {{jsxref("TypeError")}} в strict mode.

+ +

Примеры

+ +

В приведенном ниже примере показано, как установить getter для свойства. Он не задает сеттер, так TypeError выдается при попытке установить свойство температуры до 30. Дополнительные сведения см. Также в {{jsxref("Object.defineProperty()")}} странице.

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

Чтобы устранить эту ошибку, необходимо либо удалить строку 16, в которой предпринята попытка задать свойство temperature, либо реализовать для нее сеттер, например, как показано ниже:

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

Смотрите также

+ + -- cgit v1.2.3-54-g00ecf