или почему JavaScript по-прежнему потрясающий язык.
Сегодня у меня возникла, может быть, странная идея создать функцию, которая отлаживает функцию, заданную в качестве параметра.
debug (callback) { return (...parameters) => { // eslint-disable-next-line standard/no-callback-literal const result = callback(...parameters) console.log(callback.name, parameters, result) return result } },
Итак, как вы можете видеть, отладка создает функцию-оболочку для данной функции, чтобы обернуть каждый вызов данной функции. При этом вы можете видеть в своей консоли, что происходит. Итак, если мы хотим получить представление о том, что делает следующая функция
this.toggleLocation(parseFloat(place.lat), parseFloat(place.lng))
мы окружаем его отладкой, помещая потом аргументы
this.debug(this.toggleLocation)(parseFloat(place.lat), parseFloat(place.lng))
Результат в консоли дает представление о вызове.
Еще один случай, который я тестировал, - это правила, которые я должен проверять для полей ввода, как показано ниже.
nameRules: [ rules.requiredRule, rules.minimumLengthRule(3) ],
В окружении отладки он дает мне подробную информацию о каждом вызове.
nameRules: [ this.debug(rules.requiredRule), rules.minimumLengthRule(3) ],
Вы можете пойти еще дальше, вложив целый класс или объект и все его функции. И в конце вы получите полный след того, что происходит. Он ведет себя как прокси.