alexbuki
@alexbuki
программист js

Как сделать свой Proxy?

Все еще борюсь с задачкой на переопределение api...
В принципе есть решение через прокси, но хочу попроще написать.
В общем суть вопроса:
скажем есть
const api = {
  foo: {
    myConst: 12, p: true, c: ['dsf', 23]
  },
  a: {
    b: {
      c: callback => setTimeout(() => callback(null, 'hello'), 100),
      d: () => 4
    },
    foo: {
      myConst: 14, p: 2
    }
  }
}

Надо написать функцию обертку для api которая бы возвращала объект, но модифицированный для некоторых свойств, например для чисел.
wrappedApi.foo.myConst = api.foo.myConst + 1
Можно сделать через Proxy, есть ли еще какие-то способы? Копия объекта не подходит
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 1
@StockholmSyndrome
function modifyApi(api) {
  const wrappedApi = {}; 

  for (const prop in api) {
    if (typeof api[prop] === 'number') {
      let value = api[prop];
      Object.defineProperty(wrappedApi, prop, {
        get() {
          return ++value;
        }
      });
    } else if (!Array.isArray(api[prop]) && typeof api[prop] === 'object') {
      wrappedApi[prop] = modifyApi(api[prop]);
    } else {
      wrappedApi[prop] = api[prop];
    }
  }

  return wrappedApi;
}
Ответ написан
Ваш ответ на вопрос

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

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