Skip to content

Latest commit

 

History

History
20 lines (13 loc) · 1.15 KB

polyfill怎样最靠谱?.md

File metadata and controls

20 lines (13 loc) · 1.15 KB
date tags
2020-06-07
javascript

polyfill了就一定靠谱吗?现在把工程中的js代码分为三个部分:

  1. polyfill
  2. 第三方lib
  3. 业务代码

一般来说问题就容易发生在第三方库上面,导致polyfill不靠谱。它可能会无差别篡改基础原型方法

基础原型方法,指的是最基础的那些方法,比如push,可能作为底层方法提供给第三方库,一旦被篡改则非常危险。

而polyfill的位置无论是在前还是在后都会被其影响,并且js的动态性意味着整个运行时中,在某些调用某个角落的代码,都可能篡改各种原型方法,也就是说极端情况下只依赖polyfill一定是束手无策的。

那应该怎么办?开个脑洞,测试阶段引入实时test。在测试阶段的各种测试case中都加入对基础原型方法单元测试的运行,方式可能是用事件绑定+monkey patch,整个测试的运行时没有问题,去掉测试代码再上线。

总结一下,polyfill只保证能力被注入,不保证能力后续被篡改。当然大部分第三方库不会有问题,我也没遇到过类似case。