يقدم ECMAScript 2024 العديد من التحديثات المثيرة، ولكن إحدى الميزات التي برزت بالنسبة لي هي تقديم هياكل البيانات غير القابلة للتغيير. هذه الهياكل الجديدة - السجلات والصفوف - تغير قواعد اللعبة لإدارة البيانات في JavaScript. إنها توفر طريقة مُرضية للحفاظ على بياناتنا سليمة وآمنة ومتسقة، وهو أمر في غاية الأهمية عندما نريد تطبيقات موثوقة يمكننا صيانتها بسهولة. هذا هو السبب وراء كون هياكل البيانات غير القابلة للتغيير مثيرة للغاية، وكيف يمكنك استخدامها بشكل أكثر فعالية.
السجلات والصفوف هي هياكل بيانات جديدة غير قابلة للتغيير حسب التصميم. هذا يعني أنه بمجرد إنشاء سجل أو صف، لا يمكن تغيير محتوياته. وأي محاولة لتعديلها تؤدي إلى إنشاء مثيل جديد، بينما يظل الأصل دون تغيير. يساعد هذا الثبات على منع الآثار الجانبية غير المقصودة ويجعل التعليمات البرمجية الخاصة بك أكثر قابلية للتنبؤ بها.
السجلات تشبه الكائنات غير القابلة للتغيير. يتم تعريفها ببنية محددة ولا يمكن تغييرها بعد الإنشاء. فيما يلي نظرة سريعة على كيفية استخدام السجلات:
// Creating an immutable Record const kittyFacts = #{ name: "Turbodog", age: 17, favoriteToy: "Laser Pointer" }; // Accessing values console.log(kittyFacts.name); // Outputs: Turbodog console.log(kittyFacts.favoriteToy); // Outputs: Laser Pointer // Attempting to modify will create a new instance const updatedKittyFacts = #{ ...kittyFacts, age: 18 }; console.log(kittyFacts.age); // Outputs: 17 (unchanged) console.log(updatedKittyFacts.age); // Outputs: 18 (new instance)
في هذا المثال، تعتبر kittyFacts سجلًا غير قابل للتغيير. أي تعديلات عليه، مثل تحديث العمر، تؤدي إلى تحديث سجل KittyFacts جديد، مع ترك سجل KittyFacts الأصلي سليمًا.
الصفوف هي صفائف غير قابلة للتغيير يمكنها الاحتفاظ بعدد ثابت من العناصر. وهي مفيدة بشكل خاص لتمثيل مجموعات مرتبة من القيم التي لا ينبغي تغييرها.
// Creating an immutable Tuple const concertSetlist = #[ "Tupelo", "Live Oak", "Strawberry Woman", "Elephant" ]; // Accessing values console.log(concertSetlist[0]); // Outputs: Tupelo console.log(concertSetlist[2]); // Outputs: Strawberry Woman // Attempting to modify will create a new instance const updatedSetlist = #[...concertSetlist, "Chaos and Clothes"]; console.log(concertSetlist.length); // Outputs: 4 (unchanged) console.log(updatedSetlist.length); // Outputs: 5 (new instance); // الوصول إلى القيم console.log(concertSetlist[0]); // المخرجات: توبيلو console.log(concertSetlist[2]); // المخرجات: امرأة الفراولة // ستؤدي محاولة التعديل إلى إنشاء مثيل جديد const updateSetlist = #[...concertSetlist, "الفوضى والملابس"]; console.log(concertSetlist.length); // النواتج: 4 (دون تغيير) console.log(updatedSetlist.length); // المخرجات: 5 (مثيل جديد)
هنا، للحفلات الموسيقيةSetlist عبارة عن Tuple غير قابل للتغيير. تؤدي إضافة أغنية جديدة إلى قائمة الأغاني إلى إنشاء مجموعة محدثة جديدة من قائمة الأغاني، مع الحفاظ على الأغنية الأصلية.
تأتي السجلات والصفوف مع طرق مفيدة للتعامل مع البيانات بشكل ثابت. على سبيل المثال، يتيح التابع with الخاص بـ Tuples إجراء تحديثات سهلة على مؤشرات محددة:
// Creating a Tuple const originalMixtape = #[ "If We Were Vampires", "World Leader Pretend", "Right Back to It" ]; // Updating a specific index const updatedMixtape = originalMixtape.with(1, "Turn You Inside-Out"); console.log(originalMixtape); // Outputs: #[ "If We Were Vampires", "World Leader Pretend", "Right Back to It" ]; console.log(updatedMixtape); // Outputs: #[ "If We Were Vampires", "Turn You Inside-Out", "Right Back to It" ];// إنشاء Tuple const originalMixtape = #
; // تحديث فهرس محدد const updateMixtape = originalMixtape.with(1, "Turn You Inside-Out"); console.log(originalMixtape); // المخرجات: #
; console.log(updatedMixtape); // المخرجات: #في هذا المثال، تقوم الطريقة with بتحديث المسار في الفهرس 1 دون تغيير شريط الأغاني الأصلي.
تم تقديم هياكل البيانات غير القابلة للتغيير - السجلات والصفوف - في ECMAScript 2024، وتمثل تحسينًا كبيرًا لـ JavaScript. فهي تساعد على تعزيز اتساق البيانات، وتبسيط عملية تصحيح الأخطاء، والمواءمة بشكل جيد مع ممارسات البرمجة الوظيفية. ومن خلال تجربة هذه الهياكل غير القابلة للتغيير، يمكنك إنشاء تطبيقات أكثر موثوقية وقابلة للصيانة مع تجنب المفاجآت الشائعة والآثار الجانبية للبيانات القابلة للتغيير.
مصادر:
https://www.interactivated.me/blog/whats-new-in-javascript-top-10-exciting-features-for-2024
https://thenewstack.io/whats-new-for-javascript-developers-in-ecmascript-2024/
https://www.w3schools.com/js/js_2024.asp
https://github.com/tc39/proposal-record-tuplehttps://tc39.es/proposal-record-tuple/tutorial/
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3