Дескрипторы свойств объектов (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
определено с помощью дескрипторов свойств, которые запрещают изменение и удаление свойства.