Метод .getOwnPropertyDescriptors()
используется для получения всех дескрипторов свойств объекта в виде объекта собственных свойств.
Дескриптор свойства (property descriptor) - это объект, который содержит свойства, описывающие, как свойство объекта должно быть определено, например, является ли свойство записываемым (writable), перечисляемым (enumerable) и/или настраиваемым (configurable).
Синтаксис метода .getOwnPropertyDescriptors()
:
Object.getOwnPropertyDescriptors(obj)
obj
- объект, свойства которого нужно получить.
Метод .getOwnPropertyDescriptors()
возвращает объект, содержащий все дескрипторы собственных свойств объекта obj
. Ключами в этом объекте являются имена свойств объекта, а значениями - объекты дескрипторов свойств.
Пример использования метода .getOwnPropertyDescriptors()
:
const obj = {
name: "John",
age: 30,
}
const descriptors = Object.getOwnPropertyDescriptors(obj)
console.log(descriptors.name) // Вывод: { value: "John", writable: true, enumerable: true, configurable: true }
console.log(descriptors.age) // Вывод: { value: 30, writable: true, enumerable: true, configurable: true }
В этом примере, мы используем метод .getOwnPropertyDescriptors()
для получения дескрипторов свойств объекта obj
и сохраняем результат в переменную descriptors
. Затем мы выводим дескрипторы свойств name
и age
с помощью ключей в объекте descriptors
.
Метод .getOwnPropertyDescriptors()
может быть полезен при создании копии объекта с сохранением его дескрипторов свойств. Это может быть особенно полезно при клонировании объекта с методами или другими особыми свойствами.
const obj = {
name: "John",
age: 30,
greet() {
console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`)
},
}
const clone = Object.defineProperties({}, Object.getOwnPropertyDescriptors(obj))
console.log(clone) // Вывод: { name: "John", age: 30, greet: ƒ greet() {...} }
clone.greet() // Вывод: "Hello, my name is John and I'm 30 years old."
В этом примере, мы используем метод .defineProperties()
для создания нового объекта clone
, который является копией объекта obj
. Мы передаем в этот метод объект дескрипторов свойств, полученный с помощью метода .getOwnPropertyDescriptors()
. Затем мы выводим объект clone
и вызываем его метод greet()
.
Таким образом, метод .getOwnPropertyDescriptors()
может быть использован для получения дескрипторов свойств объекта и их использования для клонирования объекта или создания новых свойств с сохранением дескрипторов.