Spec-Zone.ru › JavaScript

TypeError: невозможно переопределить ненастраиваемое свойство "x"

Исключение JavaScript "can't redefine non-configurable property" возникает, когда была предпринята попытка переопределить свойство, но это свойство является ненастраиваемым.

Сообщение

TypeError: Cannot redefine property: "x" (V8-based)
TypeError: can't redefine non-configurable property "x" (Firefox)
TypeError: Attempting to change value of a readonly property. (Safari)

Тип ошибки

TypeError

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

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

Примеры

Ненастраиваемые свойства, созданные Object.defineProperty

Функция Object.defineProperty() создает ненастраиваемые свойства, если вы не указали их как настраиваемые.

const obj = Object.create({});
Object.defineProperty(obj, "foo", { value: "bar" });

Object.defineProperty(obj, "foo", { value: "baz" });
// TypeError: can't redefine non-configurable property "foo"

Вам нужно будет установить свойство "foo" как настраиваемое, если вы собираетесь переопределить его позже в коде.

const obj = Object.create({});
Object.defineProperty(obj, "foo", { value: "bar", configurable: true });
Object.defineProperty(obj, "foo", { value: "baz", configurable: true });

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

  • [[Configurable]]
  • Object.defineProperty()

© 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_redefine_property

Spec-Zone.ru

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