84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
如题,往前辈们解惑!!!!!!!
闭关修行中......
简单说,shim或polyfill都是为了解决兼容性问题(,有时候还会为了抹平浏览器差异)而存在的。
比如最近ES6标准中新出的promise对象,有些老的浏览器没有这个对象,或者各个浏览器的实现可能不一致,那就需要引入polyfill来解决兼容性问题。(对应的polyfill为es6-promise)。
当然你也可以自己实现一个。
其它的示例,可以看一下babel-polyfill,core-js。算是比较有名的库。
通俗来讲,JS垫片就是,在低级环境中用高级语法时,在低级环境中手动实现的高级功能,模拟高级环境
打个比方, 你写的的JS代码是一张桌子,有4个语法腿。但4个腿都是用的es3,一样长,这时候桌子非常稳当。但如果四个腿不一样长(一个腿是es5),桌子就有随时倒塌的可能,甚至不可用。这个时候你就需要垫片,把es3腿垫平,与es5一样高,你的桌面才能稳当的使用。
示例es5中的关于数组的forEach功能,在es3中不可用,你可以在es3中用Array.prototype.forEach=fn()来实现,此时,你自己实现的这个forEach就属于垫片
简单说,shim或polyfill都是为了解决兼容性问题(,有时候还会为了抹平浏览器差异)而存在的。
比如最近ES6标准中新出的promise对象,有些老的浏览器没有这个对象,或者各个浏览器的实现可能不一致,那就需要引入polyfill来解决兼容性问题。(对应的polyfill为es6-promise)。
当然你也可以自己实现一个。
其它的示例,可以看一下babel-polyfill,core-js。算是比较有名的库。
通俗来讲,JS垫片就是,在低级环境中用高级语法时,在低级环境中手动实现的高级功能,模拟高级环境
打个比方, 你写的的JS代码是一张桌子,有4个语法腿。但4个腿都是用的es3,一样长,这时候桌子非常稳当。但如果四个腿不一样长(一个腿是es5),桌子就有随时倒塌的可能,甚至不可用。这个时候你就需要垫片,把es3腿垫平,与es5一样高,你的桌面才能稳当的使用。
示例
es5中的关于数组的forEach功能,在es3中不可用,你可以在es3中用Array.prototype.forEach=fn()来实现,此时,你自己实现的这个forEach就属于垫片