Автор оригинала: FreeCodeCamp Community Member.
Откройте для себя функциональный JavaScript был назван одним из Лучшие новые функциональные программирования книги BookAuthority !
Метод декораторы – это инструмент для повторного использования общей логики. Они дополняют объектно-ориентированные программирование. Декораторы инкапсулируют ответственность, переданные разными объектами.
function TodoStore(currentUser){ let todos = []; function add(todo){ let start = Date.now(); if(currentUser.isAuthenticated()){ todos.push(todo); } else { throw "Not authorized to perform this operation"; } let duration = Date.now() - start; console.log("add() duration : " + duration); } return Object.freeze({ add }); }
Намерение Добавить ()
Метод состоит в том, чтобы добавить новые до DOS во внутреннее состояние. Кроме того, метод должен проверить авторизацию пользователя и регистрировать продолжительность выполнения. Эти две вещи являются вторичными проблемами и фактически могут повторяться в других методах.
Представьте, что мы можем инкапсулировать эти вторичные обязанности в функциях. Тогда мы можем написать код следующим образом:
function TodoStore(){ let todos = []; function add(todo){ todos.push(todo); } return Object.freeze({ add:compose(logDuration,authorize)(add) }); }
Теперь Добавить ()
Метод просто добавляет Todo
в список. Другие обязанности реализуются путем украшения метода.
Лог действия ()
и Авторизация ()
декораторы.
Продолжительность журнала
Общим сценарием является регистрирующий продолжительность вызова метода. Следующий декоратор Журнал продолжительность синхронного вызова.
function logDuration(fn){ return function decorator(...args){ let start = Date.now(); let result = fn.apply(this, args); let duration = Date.now() - start; console.log(fn.name + "() duration : " + duration); return result; } }
Обратите внимание, как называлась оригинальная функция – путем прохождения текущего значения это
И все аргументы: fn.apply (это, args)
Отказ
Откройте для себя функциональный JavaScript был назван одним из Лучшие новые функциональные программирования книги BookAuthority !
Для получения дополнительной информации о применении методов функциональных программиров в реакции посмотрите на Функциональный реагировать Отказ
Учить Функциональный реагировать в проекте, основанном на проекте, с Функциональная архитектура с реагированием и redux Отказ
Следуйте в Twitter