跳至主要内容

匯入聲明

· 閱讀時間約 3 分鐘
Dan Clark ([@dandclark1](https://twitter.com/dandclark1)), 匯入聲明的強勢進口商

全新的匯入聲明功能允許模組匯入語句在模組規範之外附加額外的信息。該功能的初始用途是啟用以JSON 模組形式匯入 JSON 文件:

私有品牌檢查,也就是 `#foo in obj`

· 閱讀時間約 3 分鐘
Marja Hölttä ([@marjakh](https://twitter.com/marjakh))

The in operator 可用於測試給定的物件(或其原型鏈上的任何物件)是否具有給定屬性:

const o1 = {'foo': 0};
console.log('foo' in o1); // true
const o2 = {};
console.log('foo' in o2); // false
const o3 = Object.create(o1);
console.log('foo' in o3); // true

私有品牌檢查功能擴展了 in 操作符以支持私有類字段:

class A {
  static test(obj) {
    console.log(#foo in obj);
  }
  #foo = 0;
}

A.test(new A()); // true
A.test({}); // false

class B {
 #foo = 0;
}

A.test(new B()); // false; 它不是相同的 #foo

由於私有名稱僅在定義它們的類中可用,測試也必須發生在類內部,例如在像上面的 static test 方法中。

子類實例接收來自父類的私有字段作為自身屬性:

class SubA extends A {};
A.test(new SubA()); // true

但是通過 Object.create 創建的物件(或稍後通過 __proto__ 設置器或 Object.setPrototypeOf 設置了原型的物件)未接收到私有字段作為自身屬性。由於私有字段查找僅作用於自身屬性,in 操作符無法找到這些繼承的字段:

類別靜態初始化區塊

· 閱讀時間約 2 分鐘
Shu-yu Guo ([@_shu](https://twitter.com/_shu))

新的類別靜態初始化區塊語法允許開發者將應該在某個類別定義中執行一次的代碼集中到一個地方。以下是一個示例,其中一個偽隨機數生成器使用靜態區塊在 class MyPRNG 定義被評估時初始化熵池一次。

`Intl.DisplayNames`

· 閱讀時間約 4 分鐘
Shu-yu Guo ([@_shu](https://twitter.com/_shu)) 和 Frank Yung-Fong Tang

面向全球使用者的網頁應用需要以多種語言展示語言、地區、文字書寫系統和貨幣的名稱。這些名稱的翻譯需要數據,而這些數據可從 Unicode CLDR 獲取。將這些數據作為應用的一部分進行打包會增加開發成本。用戶傾向於一致的語言和地區名稱翻譯,並且隨著世界的地緣政治變化保持數據的最新需要不斷的維護。

快速、平行應用程式與 WebAssembly SIMD

· 閱讀時間約 10 分鐘
Deepti Gandluri ([@dptig](https://twitter.com/dptig))、Thomas Lively ([@tlively52](https://twitter.com/tlively52))、Ingvar Stepanyan ([@RReverser](https://twitter.com/RReverser))

SIMD 代表 單指令,多資料。SIMD 指令是一種特別的指令類型,通過同時對多個資料元素進行相同的操作來利用應用程式中的資料平行性。對計算密集型應用程式,例如音訊/影片編解碼器、影像處理器,都是利用 SIMD 指令加速性能的典型範例。大多數現代架構都支援某些種類的 SIMD 指令。

正則表達式匹配索引

· 閱讀時間約 5 分鐘
Maya Armyanova ([@Zmayski](https://twitter.com/Zmayski)),經常表達新功能

JavaScript 現在配備了一項新的正則表達式增強功能,稱為「匹配索引」。假設您想在 JavaScript 代碼中找到與保留字重合的無效變量名,並在變量名稱下方顯示插入符號和「下劃線」,例如:

`String.prototype.replaceAll`

· 閱讀時間約 4 分鐘
Mathias Bynens ([@mathias](https://twitter.com/mathias))

如果你曾經在 JavaScript 中處理過字串,很可能遇到過 String#replace 方法。String.prototype.replace(searchValue, replacement) 根據你指定的參數返回一個進行部分匹配替換後的字串: