Полифилл - это прокладка, которая заменяет первоначальный вызов на вызов прокладки.
Например, допустим, вы хотите использовать объект navigator.mediaDevices, но не все браузеры поддерживают это. Вы можете представить себе библиотеку, в которой есть прокладка, которую вы можете использовать так:
<script src="js/MediaShim.js"></script>
<script>
MediaShim.mediaDevices.getUserMedia(...);
</script>
В этом случае вы явно вызываете прокладку вместо использования исходного объекта или метода. С другой стороны, полифилл заменяет объекты и методы исходных объектов.
Например:
<script src="js/adapter.js"></script>
<script>
navigator.mediaDevices.getUserMedia(...);
</script>
В вашем коде все выглядит так, как будто вы используете стандартный объект navigator.mediaDevices. Но на самом деле, polyfill (в данном случае адаптер.js) заменил этот объект своим собственным.
Тот, на кого он заменил его, это прокладка. Он обнаружит, поддерживается ли эта функция изначально, и использует ее, если она есть, или будет обходить ее, используя другие API, если это не так.
Таким образом, полифилл - это своего рода «прозрачная» прокладка. И это то, что имел в виду Реми Шарп (который придумал этот термин), когда говорил: « если вы удалите скрипт полизаполнения, ваш код продолжит работать без каких-либо изменений, несмотря на удаление полифилла ».