"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > أسرار ترتيب خصائص كائن JavaScript

أسرار ترتيب خصائص كائن JavaScript

تم النشر بتاريخ 2024-10-31
تصفح:260

سألني أحد الأشخاص مؤخرًا، هل خصائص كائن JavaScript بالضرورة غير مرتبة ولا يمكن التنبؤ بها؟

قد يجيب المطورون الذين تعرضوا مبكرًا لـ JavaScript على أن Object.keys() أو for...in تُرجع ترتيبًا غير متوقع لخصائص الكائن. ولكن هل لا يزال هذا هو الحال؟

كما قد تتوقع، هناك الآن قواعد يجب اتباعها.

بدءًا من ECMAScript 2020، تتبع كل من Object.keys و...in وObject.getOwnPropertyNames وReflect.ownKeys نفس ترتيب المواصفات. وهم:

1. الخصائص الخاصة هي فهارس مصفوفة، بترتيب فهرس رقمي تصاعدي

The Secrets of JavaScript Object Property Order

فهرس الصفيف هو مفتاح خاصية ذو قيمة سلسلة وهو عبارة عن سلسلة رقمية أساسية. والسلسلة الرقمية الأساسية هي تمثيل سلسلة لرقم سيتم إنتاجه بواسطة ToString، أو السلسلة "-0". على سبيل المثال، "012" هو ليس سلسلة رقمية أساسية، ولكن "12" هو كذلك.

2. خصائص السلسلة الخاصة الأخرى، بترتيب زمني تصاعدي لإنشاء الخاصية

The Secrets of JavaScript Object Property Order

يضيف الكود أعلاه نقطة المعرفة لحلقة الحدث. نظرًا لأن setTimeout هي مهمة ماكرو غير متزامنة، لم تتم إضافة الخاصية c إلى obj عند إخراج console.log.

3. خصائص الرمز الخاص، بترتيب زمني تصاعدي لإنشاء الخاصية

The Secrets of JavaScript Object Property Order

خاصية الرمز هي نفس خاصية السلسلة، بترتيب زمني تصاعدي لإنشاء الخاصية. لكن Object.keys، لـ...in، لا يمكن لأساليب Object.getOwnPropertyNames الحصول على خصائص رمز الكائن، ويمكن لـ Reflect.ownKeys وObject.getOwnPropertySymbols الحصول على خصائص الرمز.

خاتمة

عندما تكون مفاتيح خصائص الكائن عبارة عن مزيج من الأنواع المذكورة أعلاه، تتم إضافة مفاتيح الأعداد الصحيحة غير السالبة للكائن (القابلة للإحصاء وغير القابلة للإحصاء) أولاً إلى المصفوفة بترتيب تصاعدي، ثم تتم إضافة مفاتيح السلسلة بترتيب الإدراج. وأخيرًا، تتم إضافة مفاتيح الرموز بترتيب الإدراج.

The Secrets of JavaScript Object Property Order

ولكن إذا كنت تعتمد بشدة على ترتيب الإدراج، فإن Map يضمن لك ذلك.

إذا وجدت هذا مفيدًا، فيرجى التفكير في الاشتراك في النشرة الإخبارية الخاصة بي للحصول على المزيد من المقالات والأدوات المفيدة حول تطوير الويب. شكرا على القراءة!

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/zacharylee/the-secrets-of-javascript-object-property-order-4oh4?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3