Полифилл - это прокладка, которая заменяет исходный вызов вызовом прокладки.
Например, допустим, вы хотите использовать объект 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, если это не так.
Таким образом, полифилл - это своего рода «прозрачная» прокладка. И это то, что имел в виду Реми Шарп (который придумал этот термин), когда говорил: « Если вы удалите скрипт polyfill, ваш код продолжит работать без каких-либо изменений, несмотря на удаление polyfill ».