polyfill

Polyfill “腻子”(装修的时候,可以把缺损的地方填充抹平)。

比如,html5 的 storage(session, local),不同浏览器,不同版本,兼容性不一样。

Polyfill 就为解决这样的问题而产生的。通过写对应的Polyfill(判断当前浏览器是否支持某功能,如果不支持就写一些支持的补丁代码),把不支持的变成支持。

再如,有些旧浏览器不支持 Number.isNaN 方法,相应的Polyfill如下:

if(!Number.isNaN) { 
    Number.isNaN = function(num) { 
        return(num !== num); 
    } 
} 

如果浏览器没有 Number.isNaN 方法,就给它添加上去,Polyfill 就是这样解决 API 的兼容问题的。

对 html5 各个特性支持的 Polyfill:https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills。

 

shim 和 polyfill 有什么区别:

shim 是一个库,它将一个新的 API 引入到一个旧的环境中,而且仅靠旧环境中已有的手段实现一个 polyfill 就是一个用在浏览器 API 上的 shim。 我们通常的做法是先检查当前浏览器是否支持某个 API,如果不支持的话就加载对应的 polyfill。 然后新旧浏览器就都可以使用这个 API 了。

es5-shim 是一个 shim(而不是 polyfill)的例子,它在 ECMAScript 3 的引擎上实现了 ECMAScript 5 的新特性,而且在 Node.js 上和在浏览器上有完全相同的表现(因为它能在 Node.js 上使用, 不光浏览器上, 所以它不是 polyfill)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值