什么是 JavaScript Polyfill?

能够编写现代代码并发布到旧浏览器

polyfill 是一段代码(通常是 Javascript 代码),用于为原生不支持它的旧浏览器提供现代功能。

例如 – Object.assign 的 polyfill 必须提供与真实函数相同的功能,但是它需要 29 行代码: Object.assign Polyfill

仅包含想要支持的浏览器的 polyfill

为了让我们的 JavaScript 包更小,我们只想为我们想要支持的浏览器提供 polyfill,即 IE11 及更高版本。 如果不必支持 IE,那么我们的捆绑包可能会更小。

在实现之前检查方法是否存在

在覆盖之前,请务必检查我们正在填充的方法是否存在。 例如 trim() 是非常旧的 IE 版本不支持的方法:

if (typeof String.prototype.trim !== 'function') {
  String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,'')
  }
}

> " zebra ".trim() // "zebra"

编写条件逻辑后,我们可以在 HTML 文档中的代码之前运行一个脚本,并运行这些 if 检查以查看是否支持这些方法。 如果它们受支持 – 不做任何事情,如果不支持 – 实现它们。