ポリフィルは、元の呼び出しをシムへの呼び出しに置き換えるシムです。
たとえば、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(例ではadapter.js)がこのオブジェクトを独自のオブジェクトに置き換えています。
交換したのはシムです。これにより、機能がネイティブにサポートされているかどうかが検出され、サポートされている場合は使用されます。サポートされていない場合は、他のAPIを使用して回避されます。
したがって、ポリフィルは一種の「透明な」シムです。そして、これは、「ポリフィルスクリプトを削除した場合、ポリフィルが削除されても変更を必要とせずにコードが機能し続ける」と言ったときにRemy Sharp(この用語を作り出した)が意味したことです。