在 Chrome 72 中,我們新增了以下支援功能:
- 在 JavaScript 中建立公開類別欄位現在變得更加簡潔。
- 您可以使用新的 User Activation API,查看網頁是否已啟用
- 使用
Intl.format()
API 就能輕鬆將清單本地化。
還有更多!
我是 Pete LePage,讓我們深入瞭解 Chrome 72 版為開發人員提供的新功能!
變更記錄檔
這篇文章只涵蓋部分重點,如要瞭解 Chrome 72 的其他變更,請查看下方連結。
公開類別欄位
我的第一個程式語言是 Java,因此在學習 JavaScript 時,我有點不知所措。如何建立課程?還是繼承?那麼公開和私人屬性和方法呢?許多最新的 JavaScript 更新功能 讓物件導向程式設計更加容易。
現在可以建立運作方式與預期相似的類別,包含建構函式、getter 和 setter、靜態方法以及公開屬性。
多虧 V8 7.2 與 Chrome 72 一同推出,您現在可以在類別定義中直接宣告公開類別欄位,而不需要在建構函式中執行這項操作。
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 必須透過使用者手勢啟用,才能運作。很抱歉,瀏覽器以不同方式處理啟用作業。
Chrome 72 導入了使用者啟用 2.0 版,可以簡化所有封閉 API 的使用者啟動程序。這項技術以全新的規格為基礎,將在所有瀏覽器的啟動方式標準化。
navigator
和 MessageEvent
都提供新的 userActivation
屬性,其中包含 hasBeenActive
和 isActive
:
hasBeenActive
會指出關聯視窗在生命週期中是否曾經歷使用者啟用。isActive
會指出相關聯的視窗目前在生命週期內是否已啟用使用者啟用。
詳情請參閱「在各 API 中確保使用者啟用作業一致」
使用 Intl.format
將事物清單本地化
我很喜歡 Intl
API,因為它們非常適合將內容翻譯成其他語言!Chrome 72 推出了新的 .format()
方法,可簡化清單的算繪作業。與其他 Intl
API 一樣,這項 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 開發人員 YouTube 頻道,這樣一來,我們發布新影片時,你就會收到電子郵件通知。
我是 Pete LePage,Chrome 73 一推出,我就會馬上在這裡告訴你 Chrome 有哪些新功能!