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 年 3 月起,所有现代浏览器中均支持 at()
方法:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
أبريل 2021 | 2021 年 7 月 | 2021 年 7 月 | 2022 年 3 月 | 2021 年 8 月 |
ملاحظة:
يسمح العديد من اللغات باستخدام المؤشرات السلبية (مثل [-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 年 3 月起,所有现代浏览器中均支持 at()
方法:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
أبريل 2021 | 2021 年 7 月 | 2021 年 7 月 | 2022 年 3 月 | 2021 年 8 月 |
RegExp d 修饰符
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)
Error Cause
ES2022 允许通过 error.cause 指定错误的根本原因。
实例
try { connectData(); } catch (err) { throw new Error("Connecting failed.", { cause: err }); }
JavaScript await import
JavaScript 模块现在可以在运行前等待需要导入的资源:
import {myData} from './myData.js'; const data = await myData();
JavaScript 类字段声明
class Hello { counter = 0; // 类字段 } const myClass = new Hello(); let x = myClass.counter;
自 2021 年 4 月起,所有现代浏览器中均支持类字段声明:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 72 | Edge 79 | Firefox 69 | Safari 14.1 | Opera 60 |
2019 ٢ ١ ٢ | يناير 2020 | 2019 ٢٣ ٢١ | أبريل 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 |