Chrome 72 的新功能

Chrome 72 新增了对以下功能的支持:

以及更多功能

我是 Pete LePage。下面我们就来详细了解一下 Chrome 72 为开发者提供了哪些新功能!

更新日志

此处仅涵盖部分主要亮点,请点击以下链接,了解 Chrome 72 中的其他变化。

公开类字段

我的第一语言是 Java,学习 JavaScript 让我陷入了循环。如何创建课程?或继承?公共和私有属性和方法如何?JavaScript 的许多近期更新都使面向对象的编程变得更容易。

我现在可以创建像我预期那样工作的,其中包括构造函数、getter 和 setter、静态方法和公共属性。

得益于 Chrome 72 随附的 V8 7.2,您现在可以直接在类定义中声明公共类字段,无需在构造函数中执行此操作。

class Counter {
  _value = 0;
  get value() {
    return this._value;
  }
  increment() {
    this._value++;
  }
}

const counter = new Counter();
console.log(counter.value);
// → 0
counter.increment();
console.log(counter.value);
// → 1

我们正在准备对私有类字段的支持!

如需了解详情,请参阅 Mathias 关于类字段的文章。

User Activation API

是否记得网站可以在网页加载后立即自动播放声音? 您赶紧按下静音键,或者找出这是哪个标签页,然后关闭它。 因此,某些 API 需要先通过用户手势进行激活,然后才能运行。遗憾的是,各浏览器处理激活的方式不同。

在用户与网页互动之前和之后的用户激活 API。

Chrome 72 引入了 User Activation v2,以简化所有受限 API 的用户激活过程。它基于一项新规范,该规范旨在实现所有浏览器中的启用方式标准化。

navigatorMessageEvent 上都有新的 userActivation 属性,它有两个属性:hasBeenActiveisActive

  • hasBeenActive 指示关联窗口在其生命周期内是否见过用户激活。
  • isActive 用于指示关联的窗口目前是否在其生命周期内发生了用户激活。

如需了解详情,请参阅使用户激活行为在各个 API 之间保持一致

使用 Intl.format 将内容列表本地化

我喜欢 Intl API,它们对于将内容本地化为其他语言非常有用!Chrome 72 中提供了一个新的 .format() 方法,可简化列表的呈现过程。与其他 Intl API 一样,它会将负担转移至 JavaScript 引擎,而不影响性能。

使用所需的语言区域对其进行初始化,然后调用 format,它便会使用正确的字词和语法。它可以执行连词,也就是添加 and 的本地化等效项(并查看这些美丽的牛津逗号)。它可以执行析取运算,即添加 or 的局部等效项。此外,通过提供一些其他选项,您可以执行更多操作。

const opts = {type: 'disjunction'};
const lf = new Intl.ListFormat('fr', opts);
lf.format(['chien', 'chat', 'oiseau']);
// → 'chien, chat ou oiseau'
lf.format(['chien', 'chat', 'oiseau', 'lapin']);
// → 'chien, chat, oiseau ou lapin'

如需了解详情,请参阅 Intl.ListFormat API 帖子!

还有更多其他奖励!

以上只是我们针对开发者在 Chrome 72 中做出的一些改动,当然还有许多其他变化。

  • Chrome 72 更改了 Cache.addAll() 的行为,以便更好地符合规范。之前,如果同一调用中有重复条目,后续请求只会覆盖第一个条目。为了符合规范,如果有重复条目,系统会拒绝并返回 InvalidStateError
  • 现在,只要请求网址与 Service Worker 位于同一源,网站图标请求就会由 Service Worker 进行处理。

订阅

如果您想及时了解我们视频的最新动态,请订阅我们的 Chrome Developers YouTube 频道。每当我们发布新视频时,您都会收到电子邮件通知。

我是 Pete LePage