了解什么是Polyfill

什么是 polyfill

初次了解 polyfill 这个词,是在一次面试中,题目是使用数组的reduse方式实现map方法,全世界使用着许多不同的浏览器和版本的浏览器,每个浏览器都具有与其他浏览器完全不同的功能集。这会使浏览器开发成为一项艰巨的任务。流行浏览器的最新版本可以完成许多旧浏览器无法完成的任务-但您可能仍必须支持旧浏览器。通过尝试使用 polyfills 重新创建缺少的功能,Polyfill.io 使支持不同的浏览器变得更简单:您可以在支持或不支持的浏览器中利用最新和最强大的功能。

如 vue 中对 bind 的 polyfill 代码如下

function polyfillBind(fn, ctx) {
  function boundFn(a) {
    var l = arguments.length;
    return l
      ? l > 1
        ? fn.apply(ctx, arguments)
        : fn.call(ctx, a)
      : fn.call(ctx);
  }

  boundFn._length = fn.length;
  return boundFn;
}

function nativeBind(fn, ctx) {
  return fn.bind(ctx);
}
var bind = Function.prototype.bind ? nativeBind : polyfillBind;

常用对 polyfill 方法

babel-polyfill

提供完整的 ES2015+环境

polyfill.io

polyfill.io 它是一个接口,它接受一组浏览器功能的请求,并仅返回请求浏览器所需的 polyfill