
Дескрипторы свойств объектов (property descriptors) - это объекты, которые описывают, какое поведение должно быть у свойства объекта при чтении, записи или удалении свойства. Они используются для более тонкой настройки свойств объектов в JavaScript.
Дескрипторы свойств включают следующие свойства:
value- значение свойства;writable- является ли свойство доступным для записи (true/false);enumerable- является ли свойство доступным для перечисления (true/false);configurable- является ли свойство доступным для удаления и изменения свойств (true/false);get- функция, вызываемая при чтении значения свойства;set- функция, вызываемая при записи значения свойства.
Дескрипторы свойств позволяют изменять поведение свойств объектов при различных операциях, например, запрещать изменение или удаление свойства, скрывать свойство от перечисления, создавать свойства с геттерами и сеттерами и т.д.
Для настройки дескрипторов свойств объектов в JavaScript используются методы Object.defineProperty() и Object.defineProperties(), которые позволяют определять новые свойства или изменять существующие свойства объектов.
Например, вот как можно определить свойство name объекта person с помощью дескрипторов свойств:
var person = {}
Object.defineProperty(person, "name", {
value: "John",
writable: false,
enumerable: true,
configurable: false,
})
console.log(person.name) // 'John'
person.name = "Mike" // TypeError: Cannot assign to read only property 'name' of object '#<Object>'
delete person.name // TypeError: Cannot delete property 'name' of #<Object>В этом примере свойство name объекта person определено с помощью дескрипторов свойств, которые запрещают изменение и удаление свойства.