Un polyfill es un calce que reemplaza la llamada original con la llamada a un calce.
Por ejemplo, supongamos que desea utilizar el objeto navigator.mediaDevices, pero no todos los navegadores lo admiten. Se podría imaginar una biblioteca que proporciona una cuña que se puede utilizar de esta manera:
<script src="js/MediaShim.js"></script>
<script>
MediaShim.mediaDevices.getUserMedia(...);
</script>
En este caso, a la que llama explícitamente una cuña en lugar de utilizar el objeto o método original. El polyfill, por otro lado, reemplaza los objetos y métodos en los objetos originales.
Por ejemplo:
<script src="js/adapter.js"></script>
<script>
navigator.mediaDevices.getUserMedia(...);
</script>
En su código, parece como si usted está Utilizando el objeto navigator.mediaDevices estándar. Pero realmente, el polyfill (adapter.js en el ejemplo) ha reemplazado este objeto con el suyo propio.
El que lo ha reemplazado es una cuña. Esto detectará si la característica es compatible de forma nativa y la usará si es así, o funcionará con otras API si no lo es.
Por lo tanto, un polyfill es una especie de cuña "transparente". Y esto es lo que Remy Sharp (quien acuñó el término) quiso decir "si eliminó el script de polyfill, su código continuará funcionando, sin ningún cambio requerido a pesar de que se eliminó el polyfill".
Puede verificar para una mejor comprensión http://blogs.msdn.com/b/jennifer/archive/2011/08/04/html5-part-4-using-html5-while-retaining-support-for-older -browsers.aspx –
@ user3400622 Gracias por el enlace, la explicación en el enlace es muy clara. –