polyfill为什么物

Polyfill你能够理解为“腻子”,就是装修的时候,能够把缺损的地方填充抹平。html

举个例子,html5的storage(session,local), 不一样浏览器,不一样版本,有些支持,有些不支持。前端

咱们又想使用这个特性,怎么办?html5

有些人就写对应的Polyfill(Polyfill有不少),帮你把这些差别化抹平,不支持的变得支持了(简单来说,写些代码判断当前浏览器有没有这个功能,没有的话,就写一些支持的补丁代码)。git

你只须要把须要的Polyfill引入到你的程序里,就能够了。github

好比下面就是对html5各个特性支持的Polyfill,你须要哪一个,就引入哪一个。固然,你也能够本身写 :) https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills浏览器

举个例子,有些旧浏览器不支持Number.isNaN方法,Polyfill就能够是这样的:session

if(!Number.isNaN) { Number.isNaN = function(num) { return(num !== num); } } 啥意思呢,就是假如浏览器没有Number.isNaN方法,那我们就给它添加上去,所谓Polyfill就是这样解决API的兼容问题的。es5

shim和polyfill有什么区别 在JavaScript的世界里,有两个词常常被提到,shim和polyfill.它们指的都是什么,又有什么区别? 一个shim是一个库,它将一个新的API引入到一个旧的环境中,并且仅靠旧环境中已有的手段实现 一个polyfill就是一个用在浏览器API上的shim.咱们一般的作法是先检查当前浏览器是否支持某个API,若是不支持的话就加载对应的polyfill.而后新旧浏览器就均可以使用这个API了.术语polyfill来自于一个家装产品Polyfilla:htm

Polyfilla是一个英国产品,在美国称之为Spackling Paste(译者注:刮墙的,在中国称为腻子).记住这一点就行:把旧的浏览器想象成为一面有了裂缝的墙.这些[polyfills]会帮助咱们把这面墙的裂缝抹平,还咱们一个更好的光滑的墙壁(浏览器) Paul Irish发布过一个Polyfills的总结页面“HTML5 Cross Browser Polyfills”.es5-shim是一个shim(而不是polyfill)的例子,它在ECMAScript 3的引擎上实现了ECMAScript 5的新特性,并且在Node.js上和在浏览器上有彻底相同的表现(译者注:由于它能在Node.js上使用,不光浏览器上,因此它不是polyfill).ip

前端真是万年坑。。。

相关文章
相关标签/搜索