@romaro

Как итерироваться по статическим get-методам класса?

В проекте есть несколько классов со статическими методами, которые возвращают значения для ссылок. Мне нужно объединить эти ссылки в один объект. Решение, которое я написал, рабочее, но может быть есть более изящный способ?

const urlsObj = {};

const modules = {
    auth: AuthURI,
    profile: ProfileURI,
    password: ProfilePasswordURI,
    signup: SignupURI,
    site: SiteURI,
    support: SupportURI,
}

for (const moduleName in modules) {
    urlsObj[moduleName] = {};

    const uriClass = modules[moduleName];
    const arr = Object.getOwnPropertyNames(uriClass);

    arr.forEach(uriClassMethod => {
        // Отбрасываю дефолтные свойства
        if (['length', 'prototype', 'name'].includes(uriClassMethod)) return;

        urlsObj[moduleName][uriClassMethod] = uriClass[uriClassMethod];
    });
}


На выходе примерно такой объект:
{
  auth: { login: '/login', logout: '/logout' },
  profile: { profile: '/profile' },
  password: {
    passwordSet: '/password/set',
    passwordReset: '/password/reset',
    passwordResetNext: '/password/reset-next'
  },
}
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы