Рубрики
Без рубрики

Как перечислить все методы объекта в JavaScript

Узнайте, как получить массив с помощью методов объекта JavaScript

Мы можем использовать функцию Object.getOwnPropertyNames(), чтобы получить все имена свойств, связанные с объектом.

Затем мы можем отфильтровать результирующий массив, чтобы включить это имя свойства только в том случае, если это функция.

Мы определяем, является ли это функцией, используя для нее typeof .

Например, вот как мы могли бы создать служебную функцию, чтобы делать то, что нам нужно:

getMethods = (obj) => Object.getOwnPropertyNames(obj).filter(item => typeof obj[item] === 'function')

Здесь перечислены только методы, определенные для этого конкретного объекта, а не какой-либо метод, определенный в его цепочке прототипов.

Для этого мы должны пойти немного другим путем. Сначала мы должны повторить цепочку прототипов и перечислить все свойства в массиве. Затем мы проверяем, является ли каждое отдельное свойство функцией.

Простой способ убедиться, что мы не дублируем методы при навигации по цепочке прототипов (например, конструктор , который всегда присутствует), мы используем структуру данных набора, которая гарантирует уникальность значений:

const getMethods = (obj) => {
  let properties = new Set()
  let currentObj = obj
  do {
    Object.getOwnPropertyNames(currentObj).map(item => properties.add(item))
  } while ((currentObj = Object.getPrototypeOf(currentObj)))
  return [...properties.keys()].filter(item => typeof obj[item] === 'function')
}

Пример использования:

getMethods("")
getMethods(new String('test'))
getMethods({})
getMethods(Date.prototype)

Оригинал: “https://flaviocopes.com/how-to-list-object-methods-javascript/”