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

لماذا يتم مشاركة أعضاء كائن JavaScript الذين تم تصميمهم كنماذج أولية للمصفوفات عبر مثيلات الفصل؟

تم النشر بتاريخ 2024-12-22
تصفح:311

Why do JavaScript Object Members Prototyped as Arrays Become Shared Across Class Instances?

نموذج أعضاء كائن JavaScript كمصفوفات: تمت مشاركتهم عبر مثيلات الفصل

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

شرح السلوك

تسمح آلية النموذج الأولي لجافا سكريبت للكائنات بوراثة الخصائص والأساليب من الكائن الأصلي، المعروف باسم النموذج الأولي. عندما تقوم بتعريف مصفوفة كخاصية في النموذج الأولي، تصبح في متناول جميع الكائنات التي ترث من هذا النموذج الأولي.

يوضح المثال النصي هذا السلوك:

function Sandwich() {
    // Uncomment this to fix the problem
    //this.ingredients = [];
}

مع عدم التعليق على السطر الذي تم التعليق عليه، سيكون لكل مثيل ساندويتش مجموعة مكونات خاصة به. ومع ذلك، مع التعليق على السطر، تشترك جميع المثيلات في نفس مجموعة النموذج الأولي.

وهذا يعني أن إضافة مكون إلى تشيز برجر يعمل أيضًا على تحديث مكونات blt وspicable_chicken_sandwich. لمنع ذلك، يجب عليك تحديد مصفوفة المكونات داخل المنشئ، كما هو موضح في المثال المحدث أدناه:

function Sandwich() {
    this.ingredients = [];
}

النموذج الأولي مقابل المثيل

من الضروري التمييز بين خصائص النموذج الأولي وخصائص المثيل. تتم مشاركة خصائص النموذج الأولي بين جميع الكائنات التي ترث من هذا النموذج الأولي، في حين أن خصائص المثيل تكون فريدة لكل كائن.

  • قم بتعيين خصائص للنموذج الأولي لتحديد البيانات أو الأساليب المشتركة.
  • تعيين خصائص للمثيل داخل المنشئ لتحديد البيانات الخاصة بالمثيل.

تعديلات التعليمات البرمجية لإصلاح السلوك

في المثال النصي، قم بإلغاء التعليق على السطر this.ingredients = []; ضمن منشئ ساندويتش يضمن أن كل مثيل له مصفوفة مكونات خاصة به، على النحو المنشود.

الاستنتاج

يعد فهم سلوك المصفوفات النموذجية في JavaScript أمرًا بالغ الأهمية لتجنب المشاركة غير المتوقعة بين حالات الطبقة. تذكر دائمًا أن البيانات التي يجب أن تكون خاصة بالمثيل يجب أن يتم تعريفها داخل المُنشئ، بينما يمكن تعيين البيانات المشتركة إلى النموذج الأولي عبر الميراث.

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3