Spec-Zone.ru › JavaScript

TypeError: свойство "x" не является конфигурируемым и не может быть удалено

JavaScript-исключение "свойство не является конфигурируемым и не может быть удалено" возникает, когда была предпринята попытка удалить свойство, но это свойство не является конфигурируемым.

Сообщение

TypeError: Cannot delete property 'x' of #<Object> (V8-based)
TypeError: property "x" is non-configurable and can't be deleted (Firefox)
TypeError: Unable to delete property. (Safari)

Тип ошибки

TypeError только в строгом режиме.

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

Была предпринята попытка удалить свойство, но это свойство не является конфигурируемым. Атрибут configurable контролирует, может ли свойство быть удалено из объекта и могут ли быть изменены его атрибуты (кроме writable).

Эта ошибка возникает только в коде строгого режима. В нестрогом коде операция возвращает false.

Примеры

Попытка удалить неконфигурируемые свойства

Неконфигурируемые свойства встречаются не так часто, но их можно создать с помощью Object.defineProperty() или Object.freeze().

"use strict";
const obj = Object.freeze({ name: "Elsa", score: 157 });
delete obj.score; // TypeError
"use strict";
const obj = {};
Object.defineProperty(obj, "foo", { value: 2, configurable: false });
delete obj.foo; // TypeError
"use strict";
const frozenArray = Object.freeze([0, 1, 2]);
frozenArray.pop(); // TypeError

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

"use strict";
delete Math.PI; // TypeError

См. также

  • delete
  • Object.defineProperty()
  • Object.freeze()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cant_delete

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API