iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 27
0
Modern Web

從ES到ESNext - 30天輕鬆掌握ECMAScript系列 第 27

ES2021(ES12) - Intl、WeakRef

  • 分享至 

  • xImage
  •  

本系列文章經過重新編排和擴充,已出書為ECMAScript關鍵30天。原始文章因當時準備時程緊迫,多少有些許錯誤。為了避免造成讀者的困擾,以及配合書籍的內容規劃,將會陸續更新本系列文章。
本篇文章在 2021/11/2 已更新。

Intl

Intl是International的縮寫,意思是國際化的。每個地區因語系、國家、時區的不同,在文字、數值、時間日期等格式會不盡相同。因此,ECMAScript集合了相關的格式化內建物件,將Intl作為這個集合的命名空間。

new Intl.ListFormat(locales,options)

將一連串的文字串接,根據語系地區的不同,以連接詞或標點符號銜接在一起,組成一段有語意的內容。

const nameList = ['Yuri', 'Bob', 'Joe'];

const listFormat1 = new Intl.ListFormat('zh-Hant-TW', {
    type: 'conjunction',
});

console.log(listFormat1.format(nameList)); // Yuri、Bob和Joe

WeakRef

除了前面章節提到的WeakSetWeakMap之外,ES2021時又釋出全新的標準內建物件-WeakRef,讓開發者自訂的物件,也能擁有弱參考的特性。

new WeakRef(target)

使用標準內建物件WeakRef提供的建構函式建立。

const input = document.querySelector('input');
const inputWR = new WeakRef(input);

FinalizationRegistry

如果想要物件被GC後,可以執行特定的事件邏輯,例如清除跟物件相關的資料等,可以使用 FinalizationRegistry進行物件的註冊管理。

function finalizerCallback(heldValue) {
    if (heldValue === 'target-a') {
        console.log('Target A 已被移除!');
    } else if (heldValue === 'target-b') {
        console.log('Target B 已被移除!');
    }
    // ...
}
const finalizers = new FinalizationRegistry(finalizerCallback);

上一篇
ES2021(ES12) - string、Promise、運算子
下一篇
Typescript (tsconfig.json)
系列文
從ES到ESNext - 30天輕鬆掌握ECMAScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言