84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
如题,往前辈们解惑!!!!!!!
闭关修行中......
简单说,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就属于垫片