polyfill为何物

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

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

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

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

你只需要把需要的Polyfill引入到你的程序里,就可以了。

比如下面就是对html5各个特性支持的Polyfill,你需要哪个,就引入哪个。当然,你也可以自己写 :)
https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills

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

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

啥意思呢,就是假如浏览器没有Number.isNaN方法,那咱们就给它添加上去,所谓Polyfill就是这样解决API的兼容问题的。

shim和polyfill有什么区别

在JavaScript的世界里,有两个词经常被提到,shim和polyfill.它们指的都是什么,又有什么区别?
一个shim是一个库,它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手段实现
一个polyfill就是一个用在浏览器API上的shim.我们通常的做法是先检查当前浏览器是否支持某个API,如果不支持的话就加载对应的polyfill.然后新旧浏览器就都可以使用这个API了.术语polyfill来自于一个家装产品Polyfilla: Polyfilla是一个英国产品,在美国称之为Spackling Paste(译者注:刮墙的,在中国称为腻子).记住这一点就行:把旧的浏览器想象成为一面有了裂缝的墙.这些[polyfills]会帮助我们把这面墙的裂缝抹平,还我们一个更好的光滑的墙壁(浏览器)
Paul Irish发布过一个Polyfills的总结页面“HTML5 Cross Browser Polyfills”.es5-shim是一个shim(而不是polyfill)的例子,它在ECMAScript 3的引擎上实现了ECMAScript 5的新特性,而且在Node.js上和在浏览器上有完全相同的表现(译者注:因为它能在Node.js上使用,不光浏览器上,所以它不是polyfill). 本文转自网络,来自 segmentfault百度知道

polyfill 一个解决兼容的绝佳方案的更多相关文章

  1. Android DiskLruCache 源码解析 硬盘缓存的绝佳方案

    一.概述 依旧是整理东西,所以近期的博客涉及的东西可能会比较老一点,会分析一些经典的框架,我觉得可能也是每个优秀的开发者必须掌握的东西:那么对于Disk Cache,DiskLruCache可以算佼佼 ...

  2. Android DiskLruCache 源代码解析 硬盘缓存的绝佳方案

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/47251585: 本文出自:[张鸿洋的博客] 一.概述 依然是整理东西.所以最近 ...

  3. SecureCRT 绝佳配色方案, 保护你的眼睛

    http://blog.csdn.net/zklth/article/details/8937905   关键词:SecureCRT配色, SecureCRT设置颜色, Linux终端配色,Linux ...

  4. SecureCRT 绝佳配色方案, 保护你的眼睛(转发)

    SecureCRT 绝佳配色方案, 保护你的眼睛 关键词:SecureCRT配色, SecureCRT设置颜色, Linux终端配色,Linux终端颜色设置. 终端有一个好的配色,不仅能保护自己的眼睛 ...

  5. [转载]SecureCRT 绝佳配色方案, 保护你的眼睛

    FROM:http://blog.csdn.net/zklth/article/details/8937905 SecureCRT 绝佳配色方案, 保护你的眼睛   关键词:SecureCRT配色,  ...

  6. SecureCRT 绝佳配色方案

    终端有一个好的配色,不仅能保护自己的眼睛,也能给人一个好心情,本配色方案适合任意一种SSH客户端软件. 设置背景颜色 Options => Sessions options => Term ...

  7. 批处理命令篇--配置免安装mysql 5.6.22, 以及1067错误的一个解决方法

    mysql 服务启动出现1067错误的一个解决方法: 当服务启动出现1067错误时,可查看“windows 事件查看器”,发现类似错误提示 Can't find messagefile 'F:\    ...

  8. SecureCRT 下载,安装,绝佳配色,实用配置,上传下载配置合集

    SecureCRT 下载,安装,绝佳配色,实用配置,上传下载配置合集 chocoball 发布于 2年前,共有 3 条评论 SecureCRT 是一款支持 SSH2.SSH1.Telnet.Telne ...

  9. 转:UFLDL_Tutorial 笔记(deep learning绝佳的入门资料 )

    http://blog.csdn.net/dinosoft/article/details/50103503 推荐一个deep learning绝佳的入门资料 * UFLDL(Unsupervised ...

随机推荐

  1. APP设计规范

    设计师DPI指南 本指南旨在为初级到中级设计人员提供“入门”或介绍性阅读,他们希望从一开始就学习或获得有关跨DPI和跨平台设计的更多知识. 尽可能少的数学和没有不可解析的图形,只需在简短的部分中订购直 ...

  2. pycharm、idea 2018软件安装教程

    Python3.7安装: https://www.jb51.net/article/146326.htm pycharm软件: https://www.jianshu.com/p/cf77d74bef ...

  3. Java高级工程师应该掌握的东东

    今天偶然看了膜拜单车官网对java程序员的招聘要求,如下,可以对照发现自己的不足 职责 负责APP SERVER中间层等模块开发 完成各类需求开发任务,同时保证服务稳定性.茁壮性 要求 精通Java语 ...

  4. 学习ssm

    1.安装配置maven (1)在http://maven.apache.org/download.cgi下载apach-maven-3.5.4-bin.zip (2)将apach-maven-3.5. ...

  5. shell 0学习

    例一:列出/home 文件夹下的所有文件和目录的详细资料,可以使用如下命令:  ls -a -l /home   ls -al /home 例二:列出当前目录中所有以”d”开头的文件目录的详细内容,可 ...

  6. maya 安装失败/出错/卸载 2018/2017/2016/2015/2013/2012

    AUTO Uninstaller 更新下载地址 1.选择软件 2.选择版本 3.点击[开始卸载]

  7. jquery dataTable 自定义 Button及按钮事件

    参考网址:http://stackoverflow.com/questions/18134913/jquery-datatabletabletool-custom-buttons-calling-ev ...

  8. [转]js 判断图片存在

    转自:http://blog.csdn.net/qq415734794/article/details/7261479 .//检查图片是否存在 .function CheckImgExists(img ...

  9. 在oracle RAC 环境下用 PL/SQL Developer debug procedure 出现 hang 的情况

    现象描述: 用plsql developer 连接编译procedure 的时候都很正常.一旦开始Test进入Debug模式的时候就Hang住了. 初步猜测是没有权限,可是是DBA角色呀,如果没有权限 ...

  10. pat1019. General Palindromic Number (20)

    1019. General Palindromic Number (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN ...