shim 和 polyfill 有什么区别

在JavaScript的世界里,有两个词经常被提到,shim 和 polyfill,它们指的都是什么,又有什么区别?

首先 shim 和 polyfill 都是为了解决环境兼容性,利用旧环境的现有 API 实现一些新的、当前环境不支持的特性。 其中 polyfill 特指新 API 是遵循标准的。

举个栗子:jQuery 的 $.ajax 利用 XMLHttpRequest 对象和 ActiveXObject 对象实现了浏览器的 Ajax 兼容,所以它是一个 shim,因为新的 API 也就是 $.ajax 是非标准的,那么 polyfill 的解决方案是 window.XMLHttpRequest = xxx; 

资料参考:JS解惑-shim、polyfill 和 vanilla

 

你可能感兴趣的:(前端)