ECMAScript 2022
Номер версии JavaScript
Старые версии ECMAScript назывались по номерам: ES5 и ES6.
С 2016 года версии называются по годам: ES2016, 2018, 2020, 2022.
Новые возможности ES2022
- Array at()
- String at()
- RegExp /d
- Object.hasOwn()
- error.cause
- await import
- Объявление полей класса
- Приватные методы и поля
Предупреждение:
Эти функции относительно новые.
В старых браузерах может потребоваться альтернативный код (Polyfill).
JavaScript Array at()
ES2022 ввел метод массива at()
:
Пример 1
Получите третий элемент массива fruits:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits.at(2);
Пример 2
Получите третий элемент массива fruits:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits[2];
at()
Метод возвращает элемент по указанному индексу из массива.
at()
Методы, сравнимые с []
Результаты одинаковы.
С марта 2022 года все современные браузеры поддерживают at()
Метод:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
Апрель 2021 года | июль 2021 года | июль 2021 года | март 2022 года | август 2021 года |
Примечание:
Многие языки позволяют использовать отрицательные индексы (например [-1]
) Доступ к концу объекта/массива/строки.
Это невозможно в JavaScript, потому что []
Используется для доступа к массивам и объектам. obj[-1] указывает на значение ключа -1, а не на последний атрибут объекта.
at()
Метод был введен в ES2022 для решения этой проблемы.
JavaScript String at()
ES2022 ввел метод строки at()
:
Пример 1
Получите третий символ строки name:
const name = "W3Schools"; let letter = name.at(2);
Пример 2
Получите третий символ строки name:
const name = "W3Schools"; let letter = name[2];
at()
Методы возвращают指定的 символ из строки по индексу.
at()
Методы, сравнимые с []
Результаты одинаковы.
С марта 2022 года все современные браузеры поддерживают at()
Метод:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
Апрель 2021 года | июль 2021 года | июль 2021 года | март 2022 года | август 2021 года |
модификатор d RegExp
ES2022 добавил /d
Модификаторы, используемые для обозначения начала и конца соответствия.
Пример
let text = "aaaabb"; let result = text.match(/(aa)(bb)/d);
Модификаторы RegExp используются для указания несравнения的大小енных и других глобальных поисков:
Модификаторы | Описание | Попробуйте сами |
---|---|---|
g | Выполнение глобального соответствия (поиск всех). | Попробуйте сами |
i | Выполнение несравнения的大小енных соответствий. | Попробуйте сами |
d | Выполнение соответствия подстроки (добавлено в ES2022). | Попробуйте сами |
m | Выполнение многстрочного соответствия. | Попробуйте сами |
Object.hasOwn()
ES2022 предоставляет безопасный способ проверки, является ли свойство собственным свойством объекта.
Object.hasOwn()
Подобно Object.prototype.hasOwnProperty
Но поддерживает все типы объектов.
Пример
Object.hasOwn(myObject, age)
Причина ошибки
ES2022 позволяет指定 корневую причину ошибки с помощью error.cause.
Пример
try { connectData(); } throw new Error("Connecting failed.", { cause: err }); }
await import JavaScript
Модули JavaScript теперь могут ждать необходимые ресурсы до выполнения:
import {myData} from './myData.js'; const data = await myData();
Классовые поля JavaScript
class Hello { counter = 0; // классовое поле } const myClass = new Hello(); let x = myClass.counter;
С апреля 2021 года все современные браузеры поддерживают классовые поля declarations:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 72 | Edge 79 | Firefox 69 | Safari 14.1 | Opera 60 |
2019 год 1 января | Январь 2020 года | 2019 год 9 сентября | Апрель 2021 года | Январь 2020 года |
Частные методы и поля в JavaScript
class Hello { #counter = 0; // частное поле #myMethod() {} // частный метод } const myClass = new Hello(); let x = myClass.#counter; // ошибка myClass.#myMethod(); // ошибка
С июня 2021 года в всех современных браузерах поддерживаются частные методы и поля:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 74 | Edge 79 | Firefox 90 | Safari 14.1 | Opera 62 |
Апрель 2019 года | Январь 2020 года | Июнь 2021 года | Апрель 2021 года | Июнь 2019 года |