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