Shim
すでにある機能の動作を修正するコード
同じ機能を提供するが本来のAPIと完全に同じように動作するわけではない
インターフェースが違ったりする
こちらは標準のAPIに準拠する
例
引用
シム (shim) とは、すでに存在するコードの動作を修正するために使用されるコードの一部で、通常は問題を回避する新しいAPIを追加することで動作します。古いブラウザーにサポートされていない新しい API を実装するポリフィルとは異なります。
また同様に polyfill と同じように使われる言葉として「shim」というのがありますが、これもまたpolyfillとは違いがあります
polyfill はエミュレーション対象の仕様と似たようなインターフェイスを持っていて、同じように扱えるもののことを指す
新しいブラウザ向けにstr.startsWith('prefix')と書いたら、それが古いブラウザでも同じように動く、みたいな
str.startsWithByPolyfill('prefix')みたいにpolyfillのことを意識して書く必要がない
shimはエミュレーション対象の仕様と同じ機能を持っているものの、インターフェイスが異なるものを指す
同じことを実現できるけど、古いブラウザ向けと新しいブラウザでは別々のインターフェイスでそれが実現される
Shim, to me, meant a piece of code that you could add that would fix some functionality, but it would most often have it's own API. I wanted something you could drop in and it would silently work (remember the old shim.gif? that required you actually inserted the image to fix empty td cells - I wanted something that did that for me automatically).
参考