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/read-only/index.html | 82 ++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 files/ru/web/javascript/reference/errors/read-only/index.html (limited to 'files/ru/web/javascript/reference/errors/read-only') diff --git a/files/ru/web/javascript/reference/errors/read-only/index.html b/files/ru/web/javascript/reference/errors/read-only/index.html new file mode 100644 index 0000000000..4675e8008f --- /dev/null +++ b/files/ru/web/javascript/reference/errors/read-only/index.html @@ -0,0 +1,82 @@ +--- +title: 'TypeError: "x" is read-only(Ошибка Типа: "x" только для чтения)' +slug: Web/JavaScript/Reference/Errors/Read-only +translation_of: Web/JavaScript/Reference/Errors/Read-only +--- +
{{jsSidebar("Errors")}}
+ +

Сообщения

+ +
TypeError: назначение свойств только для чтения не допускается в строгом режиме (Edge)
+TypeError: "x" доступен только для чтения (Firefox)
+TypeError: 0 доступен только для чтения (Firefox)
+TypeError: не удается назначить только для чтения свойство "x" из #<объект> (Chrome)
+TypeError: не удается назначить только для чтения свойство '0' [массив объектов] (Chrome)
+
+ +

Тип ошибки

+ +

{{jsxref("TypeError")}}

+ +

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

+ +

Назначенное свойство глобальной переменной или объекта является свойством только для чтения. (Технически это свойство данных, недоступное для записи.)

+ +

Эта ошибка возникает только в коде строгого режима. В нестрогом коде назначение игнорируется.

+ +

 

+ +

Примеры

+ +

недействительные кейсы

+ +

Свойства только для чтения не очень распространены, но их можно создать с помощью {{jsxref("Object.defineProperty()")}} или {{jsxref("Object.freeze()")}}.

+ +
'use strict';
+var obj = Object.freeze({name: 'Elsa', score: 157});
+obj.score = 0;  // TypeError
+
+'use strict';
+Object.defineProperty(this, 'LUNG_COUNT', {value: 2, writable: false});
+LUNG_COUNT = 3;  // TypeError
+
+'use strict';
+var frozenArray = Object.freeze([0, 1, 2]);
+frozenArray[0]++;  // TypeError
+
+ +

В JavaScript также встроено несколько свойств, доступных только для чтения. Возможно, вы пытались переопределить математическую константу.

+ +
'use strict';
+Math.PI = 4;  // TypeError
+
+ +

 

+ +

Прости, ты не можешь этого сделать.

+ +

Глобальная переменная undefined также доступна только для чтения, поэтому вы не можете заставить замолчать печально известную ошибку "undefined is not a function:

+ +

 

+ +
'use strict';
+undefined = function() {};  // TypeError: "undefined" доступен только для чтения
+
+ +

Правильные кейсы

+ +
'use strict';
+var obj = Object.freeze({name: 'Score', points: 157});
+obj = {name: obj.name, points: 0};   // замена его на новый работающий объект
+
+'use strict';
+var LUNG_COUNT = 2;  // "var` работает, потому что он не только для чтения
+LUNG_COUNT = 3;  // ok (анатомически маловероятно, хотя)
+
+ +

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

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