Поліфос - це шим, який замінює вихідний дзвінок на виклик до шим.
Наприклад, скажіть, що ви хочете використовувати об’єкт navigator.mediaDevices, але це не всі браузери. Ви можете уявити собі бібліотеку, яка надає шрифт, який ви можете використовувати так:
<script src="js/MediaShim.js"></script>
<script>
MediaShim.mediaDevices.getUserMedia(...);
</script>
У цьому випадку ви явно викликаєте shim, а не використовуєте оригінальний об'єкт або метод. З іншого боку, полісистема замінює об'єкти та методи на вихідні об'єкти.
Наприклад:
<script src="js/adapter.js"></script>
<script>
navigator.mediaDevices.getUserMedia(...);
</script>
У вашому коді це виглядає так, ніби ви використовуєте стандартний об’єкт navigator.mediaDevices. Але насправді поліфіл (adapter.js у прикладі) замінив цей об’єкт власним.
Той, на який він його замінив, - це шим. Це дозволить виявити, чи функція підтримується в основному, і використовуватиме її, якщо вона є, або вона буде працювати навколо неї за допомогою інших API, якщо її немає.
Тож поліфіл - це свого роду "прозорий" прокладку. І саме це мав на увазі Ремі Шарп (який придумав цей термін), кажучи, " якщо ви видалили скрипт поліфункції, ваш код продовжуватиме працювати, без необхідних змін, незважаючи на те, що поліфіл не буде видалений ".