Ein polyfill ist eine Beilage , die ersetzt den ursprünglichen Anruf mit dem Aufruf zu einer Shim.
Angenommen, Sie möchten das Objekt navigator.mediaDevices verwenden, dies wird jedoch nicht von allen Browsern unterstützt. Sie können sich eine Bibliothek vorstellen, die einen Shim bereitstellt, den Sie wie folgt verwenden können:
<script src="js/MediaShim.js"></script>
<script>
MediaShim.mediaDevices.getUserMedia(...);
</script>
In diesem Fall rufen Sie explizit einen Shim auf, anstatt das ursprüngliche Objekt oder die ursprüngliche Methode zu verwenden. Die Polyfüllung hingegen ersetzt die Objekte und Methoden der Originalobjekte.
Zum Beispiel:
<script src="js/adapter.js"></script>
<script>
navigator.mediaDevices.getUserMedia(...);
</script>
In Ihrem Code sieht es so aus, als würden Sie das Standardobjekt navigator.mediaDevices verwenden. Aber wirklich, die Polyfüllung (im Beispiel adapter.js) hat dieses Objekt durch ein eigenes ersetzt.
Der, durch den es ersetzt wurde, ist eine Unterlegscheibe. Dadurch wird erkannt, ob die Funktion nativ unterstützt wird, und sie wird verwendet, wenn dies der Fall ist, oder es wird mithilfe anderer APIs umgangen, wenn dies nicht der Fall ist.
Eine Polyfüllung ist also eine Art "transparente" Unterlegscheibe. Und genau das meinte Remy Sharp (der den Begriff geprägt hat), als er sagte: " Wenn Sie das Polyfill-Skript entfernen, funktioniert Ihr Code weiterhin, ohne dass Änderungen erforderlich sind, obwohl die Polyfill entfernt wurde. "