ECMAScript 2022
Numer wersji JavaScript
Starsze wersje ECMAScript są nazywane liczbami: ES5 i ES6.
Od 2016 roku wersje są nazywane rokiem: ES2016, 2018, 2020, 2022.
Nowe funkcje ES2022
- Array at()
- String at()
- RegExp /d
- Object.hasOwn()
- error.cause
- await import
- Deklaracja pól klasy
- Prywatne metody i pola
Ostrzeżenie:
Te cechy są stosunkowo nowe.
W starszych przeglądarkach może być konieczne użycie zamiennego kodu (Polyfill).
JavaScript Array at()
ES2022 wprowadził metodę tablicy at()
:
Przykład 1
Uzyskaj trzeci element tablicy fruits:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits.at(2);
Przykład 2
Uzyskaj trzeci element tablicy fruits:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits[2];
at()
Metoda zwraca element o określonym indeksie z tablicy.
at()
Metoda jest podobna do []
Zwracane wyniki są takie same.
Od marca 2022 roku, wszystkie nowoczesne przeglądarki wspierają: at()
Metoda:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
Kwiecień 2021 roku | lipiec 2021 roku | lipiec 2021 roku | marzec 2022 roku | sierpień 2021 roku |
Uwaga:
Wiele języków zezwala na użycie ujemnych indeksów (np. [-1]
) Dostęp do końcowego elementu obiektu/tablicy/łańcucha znaków.
To nie jest możliwe w JavaScript, ponieważ []
Używana do dostępu do tablic i obiektów. obj[-1] wskazuje wartość klucza -1, a nie ostatnią właściwość obiektu.
at()
Metoda została wprowadzona w ES2022, aby rozwiązać ten problem.
JavaScript String at()
ES2022 wprowadził metodę łańcucha znaków at()
:
Przykład 1
Uzyskaj trzeci znak ciągu znaków name:
const name = "W3Schools"; let letter = name.at(2);
Przykład 2
Uzyskaj trzeci znak ciągu znaków name:
const name = "W3Schools"; let letter = name[2];
at()
Metoda zwraca znak o zadanym indeksie z ciągu znaków.
at()
Metoda jest podobna do []
Zwracane wyniki są takie same.
Od marca 2022 roku, wszystkie nowoczesne przeglądarki wspierają: at()
Metoda:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
Kwiecień 2021 roku | lipiec 2021 roku | lipiec 2021 roku | marzec 2022 roku | sierpień 2021 roku |
modyfikator d w RegExp
ES2022 dodał /d
Modyfikatory, które oznaczają początek i koniec dopasowania.
Instancja
let text = "aaaabb"; let result = text.match(/(aa)(bb)/d);
Modyfikatory RegExp służą do określenia bez rozróżniania wielkości oraz innych wyszukiwań globalnych:
Modyfikator | Opis | Spróbuj sam |
---|---|---|
g | Wykonaj dopasowanie globalne (wyszukiwanie wszystkich). | Spróbuj sam |
i | Wykonaj dopasowanie bez rozróżniania wielkości. | Spróbuj sam |
d | Wykonaj dopasowanie podstringu (nowo dodane w ES2022). | Spróbuj sam |
m | Wykonaj dopasowanie wielokrotne. | Spróbuj sam |
Object.hasOwn()
ES2022 oferuje bezpieczny sposób sprawdzania, czy właściwość jest własnością obiektu.
Object.hasOwn()
Podobnie jak Object.prototype.hasOwnProperty
ale obsługuje wszystkie typy obiektów.
Instancja
Object.hasOwn(myObject, age)
Przyczyna błędu
ES2022 pozwala określić podstawową przyczynę błędu za pomocą error.cause.
Instancja
try { connectData(); } throw new Error("Connecting failed.", { cause: err }); }
await import w JavaScript
Moduły JavaScript mogą teraz czekać na wymagane zasoby przed uruchomieniem:
import {myData} from './myData.js'; const data = await myData();
Deklaracje pól klas w JavaScript
class Hello { counter = 0; // pole klasy } const myClass = new Hello(); let x = myClass.counter;
Od kwietnia 2021 roku, wszechstronne przeglądarki wspierają deklaracje pól klas:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 72 | Edge 79 | Firefox 69 | Safari 14.1 | Opera 60 |
Styczeń 2019 roku | Styczeń 2020 roku | Wrzesień 2019 roku | Kwiecień 2021 roku | Styczeń 2020 roku |
Prywatne metody i pola w JavaScript
class Hello { #counter = 0; // Prywatne pole #myMethod() {} // Prywatna metoda } const myClass = new Hello(); let x = myClass.#counter; // Błąd myClass.#myMethod(); // Błąd
Od czerwca 2021 roku, prywatne metody i pola są obsługiwane we wszystkich nowoczesnych przeglądarkach:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 74 | Edge 79 | Firefox 90 | Safari 14.1 | Opera 62 |
Kwiecień 2019 roku | Styczeń 2020 roku | Czerwiec 2021 roku | Kwiecień 2021 roku | Czerwiec 2019 roku |