В JavaScript каждое свойство объекта имеет связанный property descriptor — скрытый объект, который определяет поведение и характеристики этого свойства.
value — фактическое значение, хранящееся в свойствеwritable — можно ли изменить значение (true или false)enumerable — появляется ли свойство в циклах типа for...inconfigurable — можно ли удалить свойство или изменить его дескрипторИспользуй Object.getOwnPropertyDescriptor() для просмотра дескриптора свойства:
const obj = { name: "Alice" };
Object.getOwnPropertyDescriptor(obj, "name");
// { value: "Alice", writable: true, enumerable: true, configurable: true }
Используй Object.defineProperty() для создания или обновления дескриптора свойства:
Object.defineProperty(obj, "name", {
writable: false,
enumerable: false
});
После этого свойство name нельзя переприсвоить, и оно будет скрыто от циклов.
Понимание property descriptors важно для:
Атрибут configurable в дескрипторе свойства определяет, можно ли изменять значение свойства после создания объекта.
Новый — ещё не проверен сообществом
Вы