Un polyfill è uno spessore che sostituisce la chiamata originale con la chiamata a uno spessore.
Ad esempio, supponiamo che tu voglia utilizzare l'oggetto navigator.mediaDevices, ma non tutti i browser lo supportano. Potresti immaginare una libreria che fornisca uno spessore che potresti usare in questo modo:
<script src="js/MediaShim.js"></script>
<script>
MediaShim.mediaDevices.getUserMedia(...);
</script>
In questo caso, si chiama esplicitamente uno shim invece di utilizzare l'oggetto o il metodo originale. Il polyfill, d'altra parte, sostituisce gli oggetti e i metodi sugli oggetti originali.
Per esempio:
<script src="js/adapter.js"></script>
<script>
navigator.mediaDevices.getUserMedia(...);
</script>
Nel tuo codice, sembra che tu stia usando l'oggetto navigator.mediaDevices standard. Ma davvero, il polyfill (adapter.js nell'esempio) ha sostituito questo oggetto con il suo.
Quello con cui lo ha sostituito è uno spessore. Questo rileverà se la funzionalità è supportata in modo nativo e la userà se lo è, oppure funzionerà usando altre API se non lo è.
Quindi un polyfill è una sorta di spessore "trasparente". E questo è ciò che Remy Sharp (che ha coniato il termine) intendeva quando diceva " se si rimuoveva lo script polyfill, il codice continuerebbe a funzionare, senza che siano necessarie modifiche nonostante la rimozione del polyfill ".