This page was translated from English by the community.Learn more and join the MDN Web Docs community.
TypeError: can't redefine non-configurable property "x"
Исключение "can't redefine non-configurable property" возникает, когда в коде переопределяетсяненастраиваемое свойство.
In this article
Сообщения
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
TheObject.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" как настраиваемое (configurable: true), если вы собираетесь переопределить его позже в коде.
const obj = Object.create({});Object.defineProperty(obj, "foo", { value: "bar", configurable: true });Object.defineProperty(obj, "foo", { value: "baz", configurable: true });