PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Что такое полифил?

Продвинутые темы

Полифил (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) добавляют отсутствующие методы в рантайме.

Другие вопросы раздела