写点什么

Firefox 31 发布,包含了 ECMAScript 6 的新特性

  • 2014-08-12
  • 本文字数:2534 字

    阅读完需:约 8 分钟

Mozilla发布了Firefox 31。这个版本包括了ECMAScript 6 的新特性、恶意文件检测以及为游戏开发者提供的一些新特性。

ECMAScript 6 是 ECMAScript 标准的下一个版本,代号“Harmony”或“ES.next”。在文章《Firefox 31 开发者指南》中,Mozilla 团队列出了 JavaScript 方面的更新。这些改动是根据 ECMAScript 6 特性的更新而做出的。包括:

  • 新的数组内建函数: Array.prototype.fill() ,这个函数将使用一个静态值填充指定范围的所有数组元素。这个范围由一个开始索引和一个结束索引给出。
  • 新的数学函数: Math.clz32() 返回一个数值,表示当一个数字用 32 位 2 进制表示时开头 0 的个数。
  • 新的字符串内建函数: String.prototype.normalize() ,对于 Firefox 桌面版可用。它将返回一个给定字符串的 Unicode 标准化形式(如果给定的不是字符串,它将先被转成字符串,然后再进行 Unicode 标准化)。
  • 新的对象方法 Object.setPrototypeOf() ,将指定对象的原型(即对象中的 [[Prototype]] 属性)设定为另一个对象或 null。
  • 新的数字常量: Number.MAX_SAFE_INTEGER 表示 JavaScript 中最大的可用整数; Number.MIN_SAFE_INTEGER 表示 JavaScript 中最小的可用整数。

关于 Firefox 已经支持的 ECMAScript 6 的特性,可以在这里找到一份详细的列表。

除了JavaScript 的更新,新的Firefox 31 发行版也对开发者工具进行了改进,包括页面控制台(Web Console)中默认启动警告、网络监视器(Network Monitor)中提供“ copy as cURL ”命令(把网络请求转换成 cURL 命令并保存到剪切板中,这样你就可以用命令行的方式发送这个请求),以及“保持网络监视器日志的选项”。

Mozilla 在《Firefox 31 开发者指南》的后半部分进行了详细阐述:

默认情况下,网络监视器将显示一个列表,包含了加载当前页面时所有的网络请求。列表中每一行显示一个请求。

当你浏览一个新页面或者刷新当前页面时,网络监视器将清除上一次的列表内容。从 Firefox 31 开始,为了使网络监视器不执行清除操作,你可以在配置中勾选“开启保持日志 (Enable persistent logs)”选项。

Firefox 31 也带来了新的恶意文件检测功能。 MozillaWiki 对这个特性给出了高度的概括

无论何时,当一个二进制文件完成下载后,user-agent 会进行本地查表,以判断是否是恶意文件。对于 Windows,如果本地查表没有结果,user-agent 可能会执行一次远程查表。

当一个二进制文件完成下载后,user-agent 会提取文件的一些元数据,包括:

  • 下载文件的目标 URL、引用 URL 以及重定向链中的任何 URL。
  • 通过 SHA-256 算法对文件内容进行计算得到的哈希值。
  • 任何通过 Windows Authenticode API 获得的证书验证信息。
  • 文件长度。
  • 下载时推荐保存的文件名。

通过使用这些元数据,user-agent 在一个阻止列表中进行查找。如果下载是允许的,它还会检查一个允许列表。如果这个二进制文件被签名了,那么签名信息会和允许列表中的进行核对。

如果在阻止列表中被匹配,user-agent 将不会保存这个文件。如果在允许列表中被匹配,user-agent 可能会认为这个二进制文件是可信的,并跳过远程查表的过程。如果没有匹配,且这个二进制文件没有签名,user-agent 可能会通过应用信誉服务(application reputation service)进行一次远程查表。

Firefox 31 的恶意文件检测特性在开发者社区引发了讨论。一个匿名用户在 Slashdot 上发表了一篇名为《Firefox 31 发布》的文章,评论到:“'对下载文件进行恶意文件检查和阻止’是对隐私的严重侵犯。它工作时几乎把每个下载文件的URL 都发送给Google。”

在Hacker News 上关于 FireFox 31 的讨论中,也可以看到类似的观点。

用户 TheCraiggers 评论到

我担心这所牵涉到的隐私问题。尤其是这个特性是隐藏的,并且只有两种方法关闭它。而其中一种需要进入到 about:config。大多数人甚至都不知道 about:config 的存在。如果我没有读改动日志的话,我甚至不知道这个检测一直在运行着。

需要注意的是,在 7 月 23 日,Mozilla 安全与隐私部门的高级工程经理 Sid Stamm,发布了一篇题为《Firefox 恶意文件检测特性的改进》的文章。这篇文章介绍了恶意文件检测这个特性,并给出了关闭这个特性的操作步骤。完整的文章可参考MozillaWiki这里

Stamm 告诉 InfoQ:

任何时候,安全浏览会把相关数据传回 Google。比如一个可疑的钓鱼网页或者恶意文件。这些信息只是用来标记恶意行为,并且只在 Google 内部使用。两周后,除 URL 外的其他信息,如你的 IP 地址,将被删除。

除了关心隐私方面的问题,Firefox 31 发行版带来了另一些特性。在文章《为HTML5 游戏开发者提供的资源》中,Mozilla 的Hack 团队对这些特性进行了描述。他们将这些特性描述成“将帮助HTML5 游戏开发者编写和调试更高级的游戏。”

Firefox 开发者工具的众多改进中,包括了对以下工具的更新:JavaScript 调试器、样式编辑器、页面查看器(Page Inspector)、代码片段速记器(Scratchpad)、分析器(Profiler)、网络监视器和页面控制台。

其他值得关注的改进还包括往浏览器中加入了一个 Canvas 调试器(Canvas Debugger)。Mozilla 的 Hack 团队介绍到:

Canvas 调试器允许你对所有画布中的调用进行跟踪。这些调用用于生成一帧画面的内容。特定的调用按不同的颜色显示,比如绘画元素或使用指定的着色器。

调试器不仅能用于开发基于 WebGL 的游戏,也能用于调试使用 Canvas 2D 开发的游戏。

当使用 Canvas 调试器时,最常被报告的两个问题是:在生成动画时,使用 setInterval 代替 requestAnimationFrame 检查一个 iFrame 中的画布元素

关于 Canvas 调试器的更多信息,开发者可以阅读《Firefox 开发者工具中Canvas 调试器的介绍》。关于Firefox 31 改动的完整清单,用户和开发者可通过这里的发布记录获取。

InfoQ 读者可通过多种方式为 Firefox 贡献力量,而且 Mozilla 欢迎这些想成为项目中一员的新人们。详细信息可以在 Mozilla 开发者网络上获取。另外,开发者网络上也有一些关于如何做的指南。

参考英文原文: Firefox 31 Released; Includes New ECMAScript 6 features


感谢赵震一对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-08-12 09:161847

评论

发布
暂无评论
发现更多内容

如何从零开始开发一款chrome扩展?

Jackpop

从感知智能跨越到认知智能,NLP领域要做哪些创新?

澜舟孟子开源社区

人工智能 自然语言处理 nlp 大模型 认知智能

私有云和公有云的主要区别有几点?两者哪个更安全?

行云管家

云计算 公有云 私有云 企业上云 云管平台

哈希彩竞猜娱乐游戏俱乐部系统开发详情

开发微hkkf5566

Android技术分享| 自定义LayoutManager

anyRTC开发者

音视频 移动开发 Andriod 动画效果 LayoutManager

TiDB 6.1 发版:LTS 版本来了

PingCAP

分布式

可视化技术在 Nebula Graph 中的应用

NebulaGraph

可视化 图数据库 知识图谱

web前端培训Vue面试题分享

@零度

Vue 前端开发

医疗机构如何利用云原生加速智慧医院建设?

York

云原生 系统架构 智慧医疗 医疗信息化 互联网医疗

新闻速递 | MobTech受邀参与华为开发者联盟沙龙,谈数据智能撬动增长

MobTech袤博科技

移动互联网 运营 精细化运营 华为开发者联盟 HDG

理解异步

大熊G

JavaScript 前端 6月月更

大数据培训Table API 和 Flink SQL的整体介绍

@零度

flink 大数据开发

如何最简单、通俗地理解Python的pandas库?

Jackpop

TASKCTL关于 "Fastjson反序列化远程代码执行漏洞” 的风险通告

敏捷调度TASKCTL

DevOps ETL算法 大数据平台 反序列化 TASKCTL

java培训 | Mybatis的特性

@零度

mybatis JAVA开发

面试官神级问题:DNS服务器是否可以加快我们的网络访问速度?

wljslmz

服务器 DNS 6月月更

百问百答第42期:应用性能探针监测原理-.net

博睿数据

智能运维 博睿数据 性能监测

字节跳动Dev Better技术沙龙来啦!参与活动赢好礼,限时免费报名中!

字节跳动终端技术

字节跳动 技术沙龙 华泰证券

Flink CDC + OceanBase 全增量一体化数据集成方案

Apache Flink

大数据 flink 编程 流计算 实时计算

什么是面向对象编程?终于懂了

Jackpop

小程序IDE,快速配置让App具备“一码通”能力

Speedoooo

ide 二维码 一码通

Flink CDC 在大健云仓的实践

Apache Flink

大数据 flink 编程 流计算 实时计算

打造“更懂电池”的充电桩 星云股份底气何来?

E科讯

庄周梦蝶终非蝶,冷静看待“谷歌AI形成人格”事件

易观分析

谷歌AI

芯动科技加入龙蜥社区,创新驱动生态发展

OpenAnolis小助手

操作系统 芯片 龙蜥社区 CLA 芯动科技

高考后,学会这种能力,让你收益终生!

图灵教育

数学 高考 数学建模

吉林长春等保测评公司有几家?详细地址在哪里?

行云管家

网络安全 等级保护 等保测评 等保测评机构 吉林

使用APICloud AVM多端框架开发消防检查助手App项目实践分享

YonBuilder低代码开发平台

APP开发 APICloud 多端开发 应用开发 avm.js

百度评论中台的设计与探索

百度Geek说

为了写好代码,我坚持了这8条习惯!

Jackpop

信息化App在「左」,数字化App在「右」

Speedoooo

App 数字化 信息化

Firefox 31发布,包含了ECMAScript 6的新特性_JavaScript_James Chesters_InfoQ精选文章