ponyfillとは何なのか
A polyfill is code that adds missing functionality by monkey patching an API. Unfortunately, it usually globally patches built-ins, which affects all code running in the environment.
polyfillはAPIにパッチをあてることで欠けている機能を追加すること。ほとんどのケースでその環境の全体に影響するような、ビルトインに対するパッチになる。
A ponyfill, in contrast, doesn’t monkey patch anything, but instead exports the functionality as a normal module, so you can use it locally without affecting other code.
ponyfillの方はAPIにパッチをあてるのではなく、同等の機能をモジュールとして提供すること。モジュールなので全体に影響は出ない形で利用できる。
たとえばNumber.isFinite()
のponyfillだと
github.com
import numIsFinite from 'is-finite' numIsFinite(10) // => true Number.isFinite(10) // => true
という感じで、ネイティブAPIに全く影響を与えずNumber.isFinite()
と同等の機能をモジュールから利用できるようになる。