Общее оглавление курса тут: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Functional.md
- 00:00:00 Введение
- 00:11:22 Функция объявление (Declaration)
- 00:12:46 Функция выражение (Expression)
- 00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function)
- 00:16:43 Лямбда-функция (Lambda function)
- 00:18:45 Область видимости (Scope)
- 00:25:00 Функции, как абстракции
- 00:26:43 Методы функции (name, length, toString( ) )
- 00:31:26 Значения по умолчанию у функции
- 00:36:46 Rest-оператор (...args)
- 00:41:49 Способ определения функции, через new Function
- 00:44:46 Функции внутри объекта
- 00:50:42 Обращение к полям объекта из привязанной функции, через this
- 00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)
- 00:58:30 Методы функции, наследуемой от объекта (call, apply)
- 01:00:53 Комментирование функций
- 01:01:27 Задание декомпозиции функции
- 01:04:24 Замыкание: context
- 01:08:41 Замыкание: chainning
- 01:11:55 Замыкание: summator
- 01:14:16 Замыкание: recursion
- 00:00:00 Замыкание
- 00:04:54 Лямбда- функция
- 00:06:06 Метод bind
- 00:08:30 Абстрагированный пример функции
- 00:13:42 Абстрагированный пример функции (расширение)
- 00:15:47 Неправильная реализация каррирования
- 00:22:22 Правильная реализация каррирования
- 00:28:54 Правильная реализация каррирования (расширение)
- 00:31:41 Функциональные абстракции (superposition)
- 00:38:02 Функциональные абстракции, с сохранением выражений (composition)
- 00:45:05 Композиция с 2 функциями
- 00:46:05 Композиция с n - функциями, при помощи метода reduce
- 00:51:25 Композиция с n - функциями, при помощи цикла
- 00:54:29 Композиция с n - функциями, при помощи рекурсии
- 00:57:40 Композиция асинхронных функций
- 01:01:27 Обобщение
- 00:00:00 Определение
- 00:02:03 Математическая функция
- 00:05:57 Функция обратного вызова (callback)
- 00:09:33 Замыкание
- 00:10:51 Цепочка вызовов
- 00:12:40 Сохранение кэша с помощью замыкания
- 00:18:29 Добавление функции поведение логирования
- 00:21:45 Обобщение
- 00:22:45 Сallback
- 00:25:32 Сallback асинхронной функции считывание файла
- 00:28:36 Сallback именованный
- 00:33:01 Сallback-timer
- 00:36:20 Сallback-timer-curry
- 00:38:59 Listener
- 00:41:10 Listener-timer
- 00:46:59 Event
- 00:53:45 Event-imitter
- 00:57:48 Deferred object (отложенный объект)
- 01:01:31 Errors
- 00:00:00 Синхронная функция-обертка
- 00:02:55 Синхронная универсальная функция-обертка
- 00:08:28 Асинхронная универсальная функция-обертка
- 00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)
- 00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)
- 00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once)
- 00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)
- 00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)
- 00:32:29 Функция-обертка с методами timeout, limit, cancel
- 00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)
- 00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)
- 00:45:47 Примесь поля через точку
- 00:51:35 Примесь поля через функцию extend
- 00:57:35 Примесь поля через object.assign( )
- 00:59:18 Примесь поведения
- 01:02:23 Примесь изменения класса
- 01:06:50 Определение
- 01:07:30 Реализация простой мемоизации
- 01:14:43 Реализация простой мемоизации с проверкой скорости
- 01:20:43 Удаление накопленного кэша
- 01:25:35 Асинхронная мемоизация
- 01:31:10 Преобразование аргументов и ключей в hash-функцию
- 01:33:32 Реализация сложной мемоизации
- 00:00:00 Введение
- 00:01:10 Чеининг через синтаксис вызова функций
- 00:02:12 Prototype
- 00:05:45 Сlass
- 00:06:11 Functor
- 00:11:54 Mutable
- 00:16:34 Iterator
- 00:26:18 Promise
- 00:26:35 Test
- 00:37:08 Compare
- 00:39:45 Benchmark
- 00:40:48 Запуск и анализ тестов
- 01:03:48 Первый способ возвращение ошибок в синхронном коде
- 01:09:24 Второй способ возвращение ошибок в синхронном коде
- 01:12:26 Возвращение ошибок в асинхронном коде
- 01:16:14 Корректное возвращение ошибок
- 01:20:03 Обработка ошибок c promise
- 01:23:58 Обработка ошибок c async-await
- 00:00:00 Определение функтора
- 00:01:40 Функтор из прототипа
- 00:08:17 Функтор из прототипа (упрощенный)
- 00:09:14 Функтор из замыкания
- 00:11:49 Функтор из замыкания с тернарным оператором
- 00:12:44 Аппликативный функтор из прототипа
- 00:18:08 Аппликативный функтор из замыкания (монада)
- 00:23:11 Пример применения монады
- 00:28:37 Функциональный объект
- 00:39:44 Пример применения функционального объекта
- 00:45:27 Обобщение
- 00:00:00 Синхронная функция-обертка
- 00:02:55 Синхронная универсальная функция-обертка
- 00:08:28 Асинхронная универсальная функция-обертка
- 00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)
- 00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)
- 00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once)
- 00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)
- 00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)
- 00:32:29 Функция-обертка с методами timeout, limit, cancel
- 00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)
- 00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)
- 00:45:47 Примесь поля через точку
- 00:51:35 Примесь поля через функцию extend
- 00:57:35 Примесь поля через object.assign( )
- 00:59:18 Примесь поведения
- 01:02:23 Примесь изменения класса
- 01:06:50 Определение
- 01:07:30 Реализация простой мемоизации
- 01:14:43 Реализация простой мемоизации с проверкой скорости
- 01:20:43 Удаление накопленного кэша
- 01:25:35 Асинхронная мемоизация
- 01:31:10 Преобразование аргументов и ключей в hash-функцию
- 01:33:32 Реализация сложной мемоизации