BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

JavaScript引擎V8 5.1遵循了更多的ECMAScript规范并支持WASM

| 作者 Sergio De Simone 关注 17 他的粉丝 ,译者 张卫滨 关注 13 他的粉丝 发布于 2016年5月5日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Google宣布了其5.1版本的V8 JavaScript引擎,这个版本提升了对ECMAScript 2017草案规范的支持,并为WASM提供了初步的支持,WASM是一个低层级的、轻便式的字节码,它致力于实现接近原生的执行速度。

与往常一样,V8的发布流程是与Chrome结合在一起的,所以V8 5.1会在Chrome 51稳定版释放的时候才会发布。

这个发布版本的最终目标是将对ECMAScript 2015的支持提升至97%。为了实现这一目标,V8 5.1包含了如下功能:

  • Symbol.species,它允许子类重写默认的构造器,这个构造器可以用在像Array.prototype.map这样的方法所使用的对象中。例如,我们可以定义一个MyArray类,它与map组合使用时,就会返回指定的类构造器:

    `class MyArray extends Array {
      //将它的类型重写为父Array的构造器
      static get [Symbol.species]() { return Array; }
    }
    var a = new MyArray(1,2,3);
    var mapped = a.map(x => x * x);
    
    console.log(mapped instanceof MyArray); // false
    console.log(mapped instanceof Array);   // true` 
  • Symbol.hasInstance,可以进行重写,用来决定某个构造器是否会将某个对象视为其实例。

  • Iterator现在支持close方法,如果循环提前终止的话,它会被调用。
  • RegExp子类可以定义自己的exec方法,从而修改所使用的正则表达式算法。
  • 推断函数的名称可以通过name属性来获取。

V8 5.1还对WebAssembly(WASM)提供了初步的支持。如前所述,WebAssembly是一个低层级的、轻便式的字节码,它致力于实现接近原生的执行速度,WebAssembly依赖于通用硬件的处理能力(common hardware capabilities),这在很多的平台上都是可用的。除此之外,WASM AST设计为启用压缩和高效的二进制格式,这意味着它会在一个沙箱环境中执行。

最后,V8 5.1提升了很多JavaScript特性的性能,包括执行像for-in这样的循环、promise与RegExp初始化、Math操作等等。

查看英文原文:V8 JavaScript Engine 5.1 Brings More ECMAScript Compliance, WASM Support

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT