Что такое полифил?
Продвинутые темы
Полифил (polyfill) — это код, который реализует современную функциональность JavaScript или браузерного API в окружениях, где она отсутствует, чтобы код работал в старых браузерах.
Идея
Если браузер не поддерживает метод/API, полифил добавляет его реализацию — так код может использовать новую возможность единообразно.
// Полифил Array.prototype.includes
if (!Array.prototype.includes) {
Array.prototype.includes = function (item) {
return this.indexOf(item) !== -1;
};
}Примеры
- Методы:
Array.includes,Object.assign,Promise,fetch. - API:
IntersectionObserver,ResizeObserver. - Наборы: core-js (полифилы ES-стандарта).
Полифил против транспиляции
- Транспиляция (Babel) — преобразует синтаксис (стрелки, классы) в старый.
- Полифил — добавляет отсутствующие методы/объекты в рантайме.
Их совмещают: Babel + core-js покрывают и синтаксис, и API.
Полифил против shim
Shim — шире: перехватывает/адаптирует API. Полифил — частный случай shim, воспроизводящий стандартное поведение.
Как подключают
Автоматически через @babel/preset-env + core-js по списку целевых браузеров (browserslist).
Коротко для собеседования
Полифил — реализация недостающего современного метода/API для старых браузеров (например, Array.includes, Promise, fetch). Дополняет транспиляцию: Babel переводит синтаксис, а полифилы (core-js) добавляют отсутствующие методы в рантайме.