This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

TypeError: can't redefine non-configurable property "x"

Исключение "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

Что не так?

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

Примеры

>

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

The Object.defineProperty() создаёт ненастраиваемые свойства, если они не помечены как настраиваемые.

js
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" как настраиваемое (configurable: true), если вы собираетесь переопределить его позже в коде.

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

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