Метод .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() может быть использован для получения дескрипторов свойств объекта и их использования для клонирования объекта или создания новых свойств с сохранением дескрипторов.


Назад