3 недели назад
Язык JavaScript - Декораторы и переадресация вызова, call/apply
Представьте, что у вас есть функция. Она делает своё дело. Но вам нужно добавить логирование. Или кэширование. Или проверку прав доступа. Или замер времени выполнения. Вы можете переписать функцию, добавив туда новый код. Но что, если функций много? Что, если вы не можете менять оригинал? Что, если вам нужно применить одно и то же улучшение к разным функциям? Встречайте декораторы - мощный паттерн, который позволяет оборачивать функции, добавляя им новое поведение без изменения исходного кода. А...
3 недели назад
Язык JavaScript - Планирование: setTimeout и setInterval
Вы когда-нибудь задумывались, как JavaScript выполняет код "через 5 секунд", если он однопоточный? Или почему setTimeout(fn, 0) не выполняется мгновенно? Или как остановить бесконечный интервал, который уже запущен? Добро пожаловать в мир асинхронного планирования. setTimeout и setInterval - это два кита, на которых держится отложенное выполнение в JavaScript. Они кажутся простыми: "запланируй эту функцию на потом". Но за этой простотой скрывается Event Loop, макрозадачи и множество подводных камней...