轉自:https://www.html.cn/archives/8339html
在學習和使用 JavaScript 的時候,咱們會常常碰到兩個術語:shim 和 polyfill。它們有許多定義和解釋,意思相近又有差別。瀏覽器
Shim 指的是在一箇舊的環境中模擬出一個新 API ,並且僅靠舊環境中已有的手段實現,以便全部的瀏覽器具備相同的行爲。主要特徵:學習
polyfill 是一段代碼(或者插件),提供了那些開發者們但願瀏覽器原生提供支持的功能。程序庫先檢查瀏覽器是否支持某個API,若是不支持則加載對應的 polyfill。主要特徵:spa
shim 的概念要比 polyfill 更大一些,能夠將 polyfill 理解爲專門兼容瀏覽器 API 的 shim 。簡單的說,若是瀏覽器X支持標準規定的功能,那麼 polyfill 能夠讓瀏覽器 Y 的行爲與瀏覽器 X 同樣。插件