TypeError: property "x" is non-configurable and can't be deleted(ÑвойÑÑво "x" не наÑÑÑаиваеÑÑÑ Ð¸ не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñдалено)
СообÑение
TypeError: вÑзов delete на 'x' не ÑазÑеÑÑн в ÑÑÑогом Ñежиме (Edge) TypeError: ÑвойÑÑво "x" не наÑÑÑаиваеÑÑÑ Ð¸ не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñдалено. (бÑаÑÐ·ÐµÑ Firefox) TypeError: не ÑдаÑÑÑÑ ÑдалиÑÑ ÑвойÑÑво "x" из #<Object> (Chrome)
Тип оÑибки
TypeError in strict mode only.
ЧÑо поÑло не Ñак?
ÐÑла Ñделана попÑÑка ÑдалиÑÑ ÑвойÑÑво, но ÑÑо ÑвойÑÑво не изменÑеÑÑÑ. ÐаÑÑÑаиваемÑй аÑÑибÑÑ Ð¾Ð¿ÑеделÑеÑ, можно ли ÑдалиÑÑ ÑвойÑÑво из обÑекÑа и можно ли измениÑÑ ÐµÐ³Ð¾ аÑÑибÑÑÑ (оÑлиÑнÑе Ð¾Ñ Ð´Ð¾ÑÑÑпнÑÑ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи).
ÐÑа оÑибка Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ ÑолÑко в коде ÑÑÑогого Ñежима. РнеÑÑÑогом коде опеÑаÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ false.
ÐÑимеÑÑ
Ðе наÑÑÑаиваемÑе ÑвойÑÑва не оÑÐµÐ½Ñ ÑаÑпÑоÑÑÑаненÑ, но иÑ
можно ÑоздаÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Object.defineProperty() или Object.freeze().
"use strict";
var obj = Object.freeze({ name: "Elsa", score: 157 });
delete obj.score; // TypeError
("use strict");
var obj = {};
Object.defineProperty(obj, "foo", { value: 2, configurable: false });
delete obj.foo; // TypeError
("use strict");
var frozenArray = Object.freeze([0, 1, 2]);
frozenArray.pop(); // TypeError
Ð JavaScript Ñакже вÑÑÑоено неÑколÑко наÑÑÑаиваемÑÑ ÑвойÑÑв. Ðозможно, Ð²Ñ Ð¿ÑÑалиÑÑ ÑдалиÑÑ Ð¼Ð°ÑемаÑиÑеÑкÑÑ ÐºÐ¾Ð½ÑÑанÑÑ.
"use strict";
delete Math.PI; // TypeError