跳到主要内容

V8版本 v9.9发布

· 阅读需 3 分钟
Ingvar Stepanyan ([@RReverser](https://twitter.com/RReverser)), 达到99%的完成度

每隔四周,我们会创建一个新的V8分支,作为我们发布流程的一部分。每个版本都在Chrome Beta里程碑之前从V8的Git主分支创建分支。今天,我们很高兴宣布我们的最新分支,V8版本9.9,目前处于Beta阶段,并将在几周后与Chrome 99 Stable协调发布。V8 v9.9充满了各种面向开发者的功能。本文预览了这次发布的一些亮点。

JavaScript

Intl.Locale扩展

在v7.4版本中,我们推出了Intl.Locale API。在v9.9中,我们为Intl.Locale对象添加了七个新属性:calendarscollationshourCyclesnumberingSystemstimeZonestextInfoweekInfo

Intl.LocalecalendarscollationshourCyclesnumberingSystemstimeZones属性返回这些属性的优先标识符数组,设计用于与其他Intl API搭配使用:

const arabicEgyptLocale = new Intl.Locale('ar-EG')
// ar-EG
arabicEgyptLocale.calendars
// ['gregory', 'coptic', 'islamic', 'islamic-civil', 'islamic-tbla']
arabicEgyptLocale.collations
// ['compat', 'emoji', 'eor']
arabicEgyptLocale.hourCycles
// ['h12']
arabicEgyptLocale.numberingSystems
// ['arab']
arabicEgyptLocale.timeZones
// ['Africa/Cairo']

Intl.LocaletextInfo属性返回一个对象,指定与文本相关的信息。目前它只有一个属性direction,用于指示语言环境中的文本默认方向性。设计用于HTML dir属性CSS direction属性。它表示字符的排序方式 - ltr(从左到右)或rtl(从右到左):

arabicEgyptLocale.textInfo
// { direction: 'rtl' }
japaneseLocale.textInfo
// { direction: 'ltr' }
chineseTaiwanLocale.textInfo
// { direction: 'ltr' }

Intl.LocaleweekInfo属性返回一个对象,用于指定与星期相关的信息。返回对象中的firstDay属性是一个数字,范围为1到7,用于表示定义星期开始的那个星期几:1代表星期一,2代表星期二,以此类推。minimalDays属性表示定义一个月或一年的第一周所需的最少天数。weekend属性是一个整数数组,通常包含两个元素,与firstDay编码一致。它表示为了日历目的,哪些日期被认为是“周末”。注意每个语言环境中的“周末”天数可能不同,并且可能不是连续的。

arabicEgyptLocale.weekInfo
// {firstDay: 6, weekend: [5, 6], minimalDays: 1}
// 一星期的第一天为星期六。周末是星期五和星期六。
// 一个月或者一年的第一周至少有一天属于该月或该年。

Intl枚举

在v9.9中,我们新增了一个函数Intl.supportedValuesOf(code),它返回一个数组,包含v8对于Intl API支持的标识符。支持的code值包括calendarcollationcurrencynumberingSystemtimeZoneunit。此新方法中的信息旨在让Web开发人员轻松了解实现支持哪些值。

Intl.supportedValuesOf('calendar')
// ['buddhist', 'chinese', 'coptic', 'dangi', ...]

Intl.supportedValuesOf('collation')
// ['big5han', 'compat', 'dict', 'emoji', ...]

Intl.supportedValuesOf('currency')
// ['ADP', 'AED', 'AFA', 'AFN', 'ALK', 'ALL', 'AMD', ...]

Intl.supportedValuesOf('numberingSystem')
// ['adlm', 'ahom', 'arab', 'arabext', 'bali', ...]

Intl.supportedValuesOf('timeZone')
// ['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', ...]

Intl.supportedValuesOf('unit')
// ['acre', 'bit', 'byte', 'celsius', 'centimeter', ...]

V8 API

请使用git log branch-heads/9.8..branch-heads/9.9 include/v8\*.h获取API更改列表。